如何创建私有、自包含的Python环境?
我想创建一个私有的、独立的Python环境,这个环境不依赖于系统库(就像virtualenv那样),而且还要包含自己的标准C/C++库版本,以便给那些只是包装了这些库的Python包使用(比如PIL和libjpeg)。
我见过一些商业应用,它们会把整个运行环境放在一个目录里,所以我知道这是可以做到的。
我的问题是,有没有什么工具可以让这个过程变得简单?Virtualenv差不多能满足我的需求,特别是使用了--no-site-packages和--relocatable这两个选项,但它并不能解决标准"C"库的问题。我想要能够构建一个PIL,比如说,使用捆绑的私有版本的libjpeg和libpng。
有没有什么建议?
3 个回答
1
可以试试 cx_Freeze 或者 py2exe。这些工具是用来打包 Python 应用程序的,目的是让它们可以被别人使用,并且会把所有需要的包和库都包含进去。
6
听起来你真正想要的是把一个特定的Python安装和脚本打包成一个可以分发的包。你可以按照以下步骤操作:
- 下载、编译并把Python安装到一个项目目录里,比如叫做 python-toolchain。
- 创建一个前缀脚本 (toolchain),这个脚本会根据相对路径动态更新
PATH
、PYTHONPATH
和LD_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 $*
- 你应用脚本中的魔法代码可以像这样:
#!.../install directory/toolchain python print "Hello World!"
- 现在你应该能够分发一个像这样的目录:
package/
python-toolchain/
app/