[英]How to make my python script easy portable? or how to compile into binary with all module dependencies?
有沒有辦法將python腳本編譯成二進制文件? 我有一個文件python腳本,它使用了很多模塊。 我想要的是在其他機器(freebsd)上復制它,但不在每個主機上安裝所有需要的模塊。
在這種情況下有哪些可能的解決方案
可以滿足您要求的程序包括:
但如前所述,您還可以創建一個包含分發的包,並將其他包作為依賴項。 然后,您可以使用pip
來安裝該軟件包,它將安裝所有軟件包。 但是你仍然需要安裝Python和pip。
cx_freeze會將您的python腳本附加到獨立的Python加載器,並生成包含該程序和共享庫依賴項的目錄。 然后,您可以將生成的分發復制到獨立於Python或模塊的其他計算機。
$ cat hello.py
print "Hello, World!"
$ ls dist/
datetime.so _heapq.so hello libpython2.6.so.1.0 readline.so
$ cat hello.py
print "Hello, World!"
$ cxfreeze hello.py
... <snip> ...
$ ls dist/
datetime.so _heapq.so hello libpython2.6.so.1.0 readline.so
$ ./dist/hello
Hello, World!
一個更好的答案可能是創建一個PIP包,將這些第三個模塊標識為依賴項,因此安裝可以像“pip install mypackage; ./ package”一樣簡單
Python還會在當前目錄中查找import
模塊,因此您不必將它們安裝到python目錄中。 您的分發文件結構可能如下所示:
main.py
module1/
__init__.py, ...
module2/
__init__.py, ...
其中main.py有import module1, module2
module1 import module1, module2
您可能希望從腳本中創建Python包。 最后,您可以在任何主機上執行pip install mypackage
,並自動下載和安裝所有必需的模塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.