在Windows上部署Python程序并获取大型库依赖项
我有一些小型Python程序,它们依赖于几个大型库,例如:在Windows上部署Python程序并获取大型库依赖项,python,windows,deployment,opencv,numpy,Python,Windows,Deployment,Opencv,Numpy,我有一些小型Python程序,它们依赖于几个大型库,例如: 努皮和希皮 matplotlib PyQt OpenCV 皮尔 我想让Windows用户更容易安装这些程序。目前我有两个选择: 使用PyInstaller、py2exe或类似工具创建巨大的可执行捆绑包 或编写分步手动安装说明 可执行捆绑包太大了。我总是觉得有些神奇的事情发生了,下次我使用不同的库或新的库版本时,这些事情可能会发生,也可能不会发生。我也不喜欢浪费空间。手动安装太容易出错,步骤太多:下载这个特定的解释器版本,下载nu
- 努皮和希皮
- matplotlib
- PyQt
- OpenCV
- 皮尔
- 使用PyInstaller、py2exe或类似工具创建巨大的可执行捆绑包
- 或编写分步手动安装说明
编辑 一些考虑 就在我发帖时,有几件事突然出现在我的脑海中: 首先,一些伪代码(无论如何,我将如何处理它)
#首先,我们检查模块
尝试:
进口numpy
除恐怖外:
#用于安装的标志numpy
#起泡,冲洗,重复所有依赖项
#接下来,我们检查版本兼容性——请注意,如果需要库版本
#不向后兼容,您处于DLL地狱中,我们无能为力。
#一旦有了不可用的依赖项,就可以安装它们
进口ftplib
#现在您可以安装了。对不起,我帮不了你。
您可以做一些事情来使您的实用程序可重用--
- 将所有URL列表、最低版本号、必需的库名称等放入配置文件中
- 编写一个脚本,帮助您设置安装程序
- Py2exe安装程序生成器脚本
- 卖掉它
- 更好的是,在GPL下发布它,这样我们就可以尽情享受你们的劳动成果
- 使用,它围绕Pip进行包装,并添加递归依赖解析和启发式,以便在发生冲突时选择正确的版本
- 将所有依赖项打包为一个egg,但不包括仍可编辑的源代码:
- 将所有依赖项打包到zip文件中,并动态直接导入模块:或
- 使用buildout:
- 与一起使用(而不是“重新定位”)
- 如果您在使用PyInstaller或类似工具冻结代码时遇到的主要问题是最终得到一个大文件,那么您可以自定义该过程,以便获得多个文件,每个依赖项一个,而不是一个大的可执行文件
如果我发现有什么东西符合我的要求,我会在这里更新。这似乎是一个可行的方法。我只是希望有人已经做了,这样我就不必编写、调试和维护它了。到目前为止,我已经发现了上述库的问题,它们需要运行自己的安装程序。OpenCV for Python需要下载并解压缩一个zip文件,然后将*.pyd文件复制到Python安装中。很高兴知道有用于windows的维护包管理器。@sastanin npackd运行外部安装程序,请检查它。如果您选择npackd,我将帮助您在默认存储库中包含先决条件:+1-许多人都有此问题。如果你能在一个单独的答案中分享你是如何做到这一点的,那就太好了。
#first, we check modules
try:
import numpy
except ImportError:
#flag numpy for installation
#lather, rinse repeat for all dependencies
#next we check version compatibility -- note that if a library version you need
#is not backwards-compatible, you're in DLL hell, and there is little we can do.
<insert version-checking code here>
#once you have your unavailable dependencies, you install them
import ftplib
<all your file-downloading here>
#now you install. sorry I can't help you here.