【发布时间】:2017-02-16 06:03:48
【问题描述】:
我正在尝试将我的代码发送到远程服务器,该服务器可能安装了不同的 python 版本和/或可能没有我的应用所需的包。
现在要实现这种可移植性,我必须使用解释器和代码构建可重定位的 virtualenv。这种方法存在一些问题(例如,您必须手动将一堆库复制到您的 virtualenv 中,因为 --always-copy 无法按预期工作)并且通常很慢。
(理论上)a way 可以静态构建 python 本身。
我想知道我是否可以将解释器与我的代码打包成一个二进制文件并将我的应用程序作为模块运行。类似的东西:./mypython -m myapp run 或 ./mypython -m gunicorn -c ./gunicorn.conf myapp.wsgi:application。
【问题讨论】:
-
你的意思是像 cx_freeze 这样的东西吗?
-
@TigerhawkT3,直到今天我才听说过 cx_freeze。浏览文档,似乎是我想要的,但它无法使用 python3.5.1 在 Ubuntu 12.04.5 上构建。我正在寻找替代品,感谢您朝正确的方向前进。
-
遗憾的是,pyinstaller 不适用于 Django 1.9 并且 py2app/py2exe 不支持 linux :(
-
如果 cx_Freeze 和 pyinstaller 不起作用,还是有希望的。您可以为您的目标发行版创建包,这将解决安装的所有依赖关系。或者,也许使用 docker 之类的东西来运行您的应用程序。
-
其他选项是nuitka和cython