如何将可用的python程序分发给没有安装分发的python ?
我已经使用python setup.py bdist_wininst
创建了一个Windows二进制安装程序。setup.py包含一个控制台脚本入口点,这样就可以创建一个Windows .exe文件并将其放在目标机器的%python%Scripts
中,按照自动脚本创建。
然而,在一台未安装python的机器上运行已安装的脚本会产生:
D:Py3.2.5> scriptsfoo.exe
Traceback (most recent call last):
File "D:Py3.2.5scriptsfoo-script.py", line 5, in <module>
from pkg_resources import load_entry_point
ImportError: No module named pkg_resources
没有名为pkg_resources的模块告诉我这个错误是因为没有安装distribution。
我如何让我的安装程序包括分发,这样我就不必告诉我们的用户"在你安装我们的程序之前,你必须去安装这个其他程序"?
啊,终于找到东西了:
您的用户可能没有在他们的机器上安装setuptools,或者即使他们做了,也可能不是正确的版本。解决这个问题是简单;只要下载
distribute_setup.py
,并把它放在相同的目录作为您的setup.py脚本。(一定要把它添加到你的复习中控制系统也是。)然后把这两行加到你的设置脚本,在脚本从setuptools导入任何内容之前:import distribute_setup distribute_setup.use_setuptools()
就是这样。distribute_setup模块将自动下载一个从PyPI匹配setuptools的版本,如果它不存在目标系统。每当您安装更新版本的setuptools时,您还应该更新项目的distribute_setup.py文件在目标机器上安装一个匹配的版本。