python - 制作私有(private)的、自包含的 python 环境的最佳方法是什么?

标签 python virtualenv

我想创建一个私有(private)的、自包含的 Python 环境,它不链接回系统库(virtualenv 的方式),并且还包括它自己的 Python 包标准 C/C++ 库版本,这些包只是用于这些库(例如 PIL 和 libjpeg)。

我见过将整个运行时分布在一个目录中的商业应用程序,所以我知道这是可以做到的。

问题是,有没有一种工具可以让这件事变得简单? Virtualenv 几乎可以让我到达那里,尤其是。使用 --no-site-packages 和 --relocatable 标志,但它不能解决标准“C”库的问题。例如,我希望能够构建一个 PIL,它使用捆绑的私有(private)版本的 libjpeg 和 libpng

有什么建议吗?

最佳答案

听起来您真正追求的是一种将特定 python 安装和脚本捆绑到可分发包中的方法。您可以执行以下操作:

  • 下载、编译并安装python到项目目录(即python-toolchain)
  • 创建一个前缀脚本 (toolchain),它将采用相对路径并更新 PATHPYTHONPATHLD_LIBRARY_PATH 动态。
#!/bin/sh

# If your clever you can determine install directory dynamically
prefix='install directory'
toolchain=$prefix/python-toolchain
export PATH=$toolchain/bin:$prefix/app/bin:$PATH
export LD_LIBRARY_PATH=$toolchain/lib:$LD_LIBRARY_PATH
export PYTHONPATH=$prefix/app/lib:$PYTHONPATH
exec $*
  • 您的应用脚本中的魔法 cookie 可能如下所示:
#!.../install directory/toolchain python

print "Hello World!"
  • 您现在应该可以像这样分发目录了:
    • 包/
      • python-toolchain/
      • app/

关于python - 制作私有(private)的、自包含的 python 环境的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4623008/

相关文章:

python - 我无法使用discord.py向我的discord机器人添加命令

python - 在 Python .Net 中将 C# 字节数组转换为 numpy 数组

Python:如何检查两个带有标题行的 CSV 文件是否包含相同的信息,而不考虑行和列的顺序?

python - 外置硬盘上 Ubuntu 14.04 LTS 中的 Virtualenv (python)

python - 我怎样才能 'clean up' 一个 virtualenv?

python - 如何正确转换列表的输出值以将它们用作函数内的参数?

Python setuptools 在 setup.py 中使用 'scripts' 关键字

python - 重命名 virtualenv 文件夹而不破坏它

python - 我可以将 Python windows 包安装到 virtualenvs 中吗?

python - 事件 virtualenv 不工作