我在服务器端开发相当大的 python 应用程序,包括所有数据库连接、文件提取、解析、命令行调用。
它成为部署的噩梦,因为我在标准 python 库之外使用了许多第三方模块。我失去了他们的踪迹。特别是不同的 Linux 操作系统使用它们的不同版本,因此使用操作系统的包管理器安装它们不再好。
我想将它们部署在所有一个包中,包括我正在使用的当前 python 版本(大多数操作系统仍然附带 Python 2.5,6 我正在使用 2.7 和 2.7 特定功能。)。
此外,我必须教客户如何部署,以便他们可以在其他服务器上进行测试。但他们不是 linux 专家。我必须让它变得简单,在一个脚本中或通过复制和粘贴。
有适用于 Windows 的 Portablepython 但没有适用于 Linux 的。而且我从来没有使用过 python 打包,因为我通常在我只托管的服务器上工作。
请告诉我 python 的可用打包和部署选项,其中包括所有已安装的 python 模块和 python 本身。
最佳答案
大多数 Python 包都可以通过在部署中创建 lib
或类似目录并将其添加到 Python 中的 sys.path
或 PYTHONPATH< 来部署
外部,然后将包目录(通常是 在 您解压缩的目录中)复制到该目录中。这让您可以将包与您部署的代码一起保存在 Mercurial 存储库中。
部署 Python 本身会比较麻烦,但是如果您可以控制它的安装位置(例如 /usr/local
或 /opt
),那么这只是 ./configure --prefix=...
、make
和 sudo make install
的问题。然后,只要脚本被标记为可执行,您就可以通过以 #!/usr/local/bin/python
之类的行开头来将脚本指向该 Python。
例如,如果您正在部署需要 docutils
的代码,那么您将执行如下操作:
cd projectDir
mkdir -p lib
tar xzvf ~/Downloads/docutils-0.8.tgz
mv docutils-0.8/docutils lib
rm -r docutils-0.8
然后此目录中的 Python 模块将在开头添加以下内容:
#!/usr/local/bin/python
import os
import sys
sys.path(os.path.join(os.path.dirname(sys.argv[0]), "lib"))
import docutils
关于python - 在一个 Bundle 中轻松部署 Python 和应用程序,适用于 Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6705193/