有没有办法将python脚本编译成二进制文件? 我有一个文件python脚本,它使用了很多模块。 我想要的是在其他机器(freebsd)上复制它,但不在每个主机上安装所有需要的模块。
在这种情况下有哪些可能的解决方案?
答案 0 :(得分:16)
可以满足您要求的程序包括:
但如前所述,您还可以创建一个包含Distribute的Package,并将其他包作为依赖项。然后,您可以使用pip
来安装该软件包,它将安装所有软件包。不过,你仍然需要安装Python和pip。
答案 1 :(得分:3)
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”一样简单
答案 2 :(得分:2)
Python还会在当前目录中查找import
个模块,因此您不必将它们安装到python目录中。您的分发文件结构可能如下所示:
main.py
module1/
__init__.py, ...
module2/
__init__.py, ...
其中main.py有import module1, module2
答案 3 :(得分:2)
您可能希望从脚本中创建Python包。最后,您将能够在任何主机上执行pip install mypackage
,并且将自动下载并安装所有必需的模块。