我有一些小的Python程序依赖于几个大型库,例如:
我想让Windows用户更容易安装这些程序。目前我有两个选择:
可执行包太大了。我总觉得有一些神奇的事情,下次我使用不同的库或新的库版本时可能会或可能不会。我也不喜欢浪费空间。手动安装太容易出错,步骤太多了:下载这个特殊的解释器版本,下载numpy,scipy,pyqt,pil二进制文件,确保它们都是为同一个python版本和同一个平台构建的,安装一个接一个,下载并解压OpenCV,将其.pyd文件复制到Python安装深层,设置环境变量和文件协会... 你看,很少有用户会有耐心和自信来做这一切
我想做的事情:只分发一个小的Python源代码,可能还有一个安装脚本,它可以获取并安装所有缺少的依赖项(正确的版本,正确的平台,安装它们)正确的顺序)。对于任何Linux软件包管理器来说,这都是一项微不足道的任务,但我不知道哪些工具可以在Windows上实现它。 是否有简单的工具可以从依赖关系 1 的URL列表中生成Windows安装程序?
1 您可能已经注意到,我列出的大多数库都不能使用pip / easy_install进行安装,但需要运行自己的安装程序并修改一些文件和环境变量。 / em>的
答案 0 :(得分:2)
npackd exists http://code.google.com/p/windows-package-manager/可以通过这里完成或使用distribute(python 3.x)或setuptools(python 2.x)和easy_install,可能是pip(不知道它的Windows兼容性)。但我会选择npackd,因为PyQt和pip / easy_install的不寻常设置(不能很好地使用它们,使用configure.py而不是setup.py)。虽然您必须为npackd创建自己的repo才能用于其中一些。我忘记了使用它的python库总共贡献了什么。
答案 1 :(得分:1)
AFAIK没有工具(我假设你用Google搜索),所以你必须自己制作一个。
获取正确的库版本似乎很简单 - 使用python的ftplib,您可以为每个库获取正确的安装程序。你怎么知道哪个版本与用户的python兼容?你可以存储不同的下载URL列表,每个列表都有一个不同的python版本(这种方法脱颖而出,可能有更好的方法;如果它很简单并且有效,那就不重要了)。
在弄清楚如何运行每个安装程序后,您可以py2exe安装程序脚本,甚至用它来获取程序本身。
正如我发布的那样,有几件事突然出现在我脑海中: 首先,一些伪代码(无论如何我会接近它)
#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.
您可以采取一些措施使您的实用程序可重用 -
答案 2 :(得分:0)
我有类似的需求,但另外我需要打包的应用程序才能在多个平台上运行。我目前正在探索目前可用的解决方案,这里有一些有趣的解决方案:
如果我找到满足我账单的东西,我会在这里更新。