Istnieją dwa sposoby rozwiązania problemu
- Użyj konstruktora statycznego, takiego jak zamrażanie lub
pyinstaller
, lubpy2exe
- Skompiluj za pomocą
cython
Wyjaśnię, jak możesz to zrobić za pomocą drugiej, ponieważ pierwsza metoda nie jest wieloplatformowa i wersja, i została wyjaśniona w innych odpowiedziach. Ponadto używanie programów takich jak pyinstaller zwykle powoduje ogromne rozmiary plików, przy czym użycie cythona spowoduje powstanie pliku o rozmiarze KB
Najpierw zainstaluj cython
. Następnie zmień nazwę pliku Pythona (powiedzmy test.py
) na .pyx
plik
sudo pip install cython
mv test.py test.pyx
Następnie możesz użyć cython
razem z GCC do skompilowania go ( cython
generuje plik C z pliku Python .pyx
, a następnie GCC kompiluje plik C)
(w odniesieniu do https://stackoverflow.com/a/22040484/5714445 )
cython test.pyx --embed
gcc -Os -I /usr/include/python3.5m -o test test.c -lpython3.5m -lpthread -lm -lutil -ldl
UWAGA : W zależności od wersji Pythona może być konieczna zmiana ostatniego polecenia. Aby dowiedzieć się, której wersji Pythona używasz, po prostu użyj
$ python -V
Będziesz mieć teraz plik binarny „test”, którego szukasz
Inne uwagi :
- Cython jest używany do używania definicji zmiennych typu C do statycznej alokacji pamięci w celu przyspieszenia programów w Pythonie. Jednak w twoim przypadku nadal będziesz używać tradycyjnych definicji Pythona.
- Jeśli używasz dodatkowych bibliotek (jak
opencv
na przykład), może być konieczne dostarczenie im katalogu za pomocą, -L
a następnie określenie nazwy biblioteki używanej -l
we flagach GCC. Więcej informacji na ten temat można znaleźć w sekcji Flagi GCC