有没有办法在python脚本中嵌入依赖项?

Jas*_*ene 25 python

我有一个简单的脚本,它依赖于dnspython来解析区域文件.我想将此脚本作为单个.py分发,用户只要安装了2.6/2.7就可以运行.我不希望用户在站点范围内安装依赖项,因为可能存在与现有软件包/版本的冲突,我也不希望它们与virtualenv混在一起.我想知道是否有办法在脚本(gzip/base64)中嵌入像dnspython这样的包,并让该脚本在运行时访问该包.也许将它解压缩到/ tmp中的目录并将其添加到sys.path?我不关心启动开销,我只想要一个单独的.py w /包括我可以分发的所有依赖项.

此外,没有构建的C依赖项,只有纯python包.

编辑:脚本不必是.py.只要它是一个可执行文件.

Sim*_*eon 9

您可以将多个Python文件打包成.egg.egg文件基本上只是具有良好定义的元数据的zip存档 - 请查看setuptools文档以了解如何执行此操作.根据文档,您可以通过指定入口点使egg文件直接可执行.这将为您提供一个可执行文件,其中可以包含您的代码+任何其他依赖项.

编辑:现在我建议建立一个pex来做到这一点.pex基本上是一个带有非stdlib依赖项的可执行zip文件.它不包含python发行版(如py2app/py2exe),但包含其他所有内容,可以使用单个命令行调用构建.https://pex.readthedocs.org/en/latest/