制作私有的,独立的python环境的最佳方法是什么?

时间:2011-01-07 06:21:08

标签: python virtualenv

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

我见过商业应用程序将整个运行时分发到一个目录中,所以我知道它可以完成。

问题是,是否有一种工具可以让这很容易? Virtualenv几乎让我在那里,尤其是。使用--no-site-packages和--relocatable标志,但它没有解决标准“C”库的问题。我希望能够构建一个PIL,例如,使用捆绑的私有版本的libjpeg和libpng

有什么建议吗?

3 个答案:

答案 0 :(得分:5)

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

  • 下载,编译并将python安装到项目目录(即.python-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!"
  • 您现在应该能够分发如下目录:
    • package/
      • python-toolchain/
      • app/

答案 1 :(得分:1)

尝试使用cx_Freeze或py2exe。它们用于打包Python应用程序以使它们可再发行,并包含它依赖的所有包/库。

答案 2 :(得分:1)

我已成功使用py2exe。还有cx_Freeze

另见此处以获取更多建议:

关于这句话:

  

没有链接回系统库

你当然不能完全消除它需要一些系统库。如果您需要Windows应用程序,则必须使用Windows API。我假设您不希望将Windows的整个副本与您的应用程序捆绑在一起,以防他们没有安装Windows ....