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 .pyxplik
sudo pip install cython
mv test.py test.pyx
Następnie możesz użyć cythonrazem z GCC do skompilowania go ( cythongeneruje 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
opencvna przykład), może być konieczne dostarczenie im katalogu za pomocą, -La następnie określenie nazwy biblioteki używanej -lwe flagach GCC. Więcej informacji na ten temat można znaleźć w sekcji Flagi GCC