在Python控制盘中包含运行时依赖项
我想发布一个完整的virtualenv,或者一堆Python轮子,它们的确切版本及其运行时依赖关系,例如:在Python控制盘中包含运行时依赖项,python,python-2.7,python-wheel,Python,Python 2.7,Python Wheel,我想发布一个完整的virtualenv,或者一堆Python轮子,它们的确切版本及其运行时依赖关系,例如: 皮克尔 那么 libcurl.so libz.so libssl.so libcrypto.so libgssapi_krb5.so libkrb5.so libresolv.so 我想我可以依靠系统安装libssl.so,但肯定不是正确版本的libcurl.so,可能不是Kerberos 将一个库打包到一个轮子中并包含所有运行时依赖项的最简单方法是什么 或者这是一
- 皮克尔
- 那么
- libcurl.so
- libz.so
- libssl.so
- libcrypto.so
- libgssapi_krb5.so
- libkrb5.so
- libresolv.so
- libkrb5.so
- libcurl.so
- 那么
另外,动态编译不是一个选项,有些模块是经过修补的。AFAIK,没有好的标准方法可移植地安装软件包中的依赖项。连续体有很多优点。numpy的人在他们的包中编写了他们自己的distutils子模块来安装一些复杂的依赖项,现在。不幸的是,您可能必须自己为其中一些依赖项制作conda包 如果您没有可移植性,那么将目标机器的包管理器作为目标显然是可行的。否则,对于便携式软件包管理器,conda是我所知道的唯一选项 或者,从您的帖子(“动态编译不是一个选项”)听起来,可移植性对您来说可能不是问题,在这种情况下,您还可以将所有需求安装到前缀目录(我遇到的大多数安装程序都支持
配置--prefix=/some/dir/
选项)。如果您有一个有保证的单一体系结构,那么您可以将所有依赖项作为前缀安装到一个目录中,并像文件一样传递。conda方法可能会更干净,但我已经使用了相当多的前缀安装,它们往往是最简单的解决方案之一
编辑:
至于conda,它同时是一个包管理器和一个类似virtualenv的环境/python安装。虽然virtualenv是在现有python安装的基础上添加的,但conda将接管整个安装,因此您可以更确定所有依赖项都已考虑在内。与pip相比,它是为添加通用的非Python依赖项而设计的,而不仅仅是编译C/Cpp版本。有关更多信息,我将看到:
- (也建议作为一种可能性)
(元数据文件)meta.yaml
(使用bash执行的Unix构建脚本)build.sh
(使用cmd执行的Windows构建脚本)bld.bat
(可选Python测试文件)run_test.py
- 源代码的修补程序(可选,请参见下文)
- 其他资源,这些资源不包括在源中,因此无法删除 由构建脚本生成
- 使用包(及其依赖项)创建测试环境
- 运行测试脚本
conda配方中有许多conda包的示例配方
\urepo
:ref:conda skeleton
命令有助于为常见的
存储库,例如PyPI
\
然后,作为客户机,您将安装该包
最后,您可能也对它感兴趣,尽管我还没有看到它在Python中有太多的用途 您可能需要查看PEX: “扩展名为.pex的文件—“pex文件”或“.pex文件”——是自包含的可执行Python虚拟环境。PEX文件使部署Python应用程序变得很容易:部署过程变成了简单的scp