【发布时间】:2013-03-18 15:43:01
【问题描述】:
我正在尝试从 python 代码创建一个 exe。我可以像这样从命令行运行代码:
python myScript.py
我已经从这里安装了 py2exe:http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/
并且,有一个如下所示的 setup.py:
from distutils.core import setup
import py2exe
setup(console=['myScript.py'])
而且,我像这样运行 setup.py:
python setup.py py2exe
我在输出中得到以下内容:
The following modules appear to be missing
['Carbon', 'Carbon.Files', '__pypy__', '_scproxy', 'http_parser.http', 'http_parser.reader', 'jinja2._debugsupport', 'jinja2._markupsafe._speedups',
'jinja2.debugrenderer', 'markupsafe', 'pretty', 'socketpool', 'socketpool.util']
而且,果然,如果我尝试运行 exe,我会收到错误:
$ ./myScript.exe
Traceback (most recent call last):
File "restkit\__init__.pyc", line 9, in <module>
File "restkit\conn.pyc", line 14, in <module>
ImportError: No module named socketpool
Traceback (most recent call last):
File "myScript.py", line 12, in <module>
ImportError: cannot import name Resource
我需要做什么才能让 py2exe 找到依赖项?
谢谢
【问题讨论】:
-
py2exe 有点过时了(我认为最后一次更改是在 2008 年?)。我认为PyInstaller 是一个活跃的项目,并且有更好的支持。另外,查看您的 cmets 到其他答案,您是否在系统级别安装了模块,或者它们是您的
myScript.py本地的? -
谢谢。我已经从 py2exe 继续前进,并且一直在尝试 cx-freeze。这些模块安装在 Python 目录中。我可以从 python shell 很好地导入它们。我会给 PyInstaller 一个机会。
-
您实际上已经在 Windows 机器上安装并导入了
Carbon和Carbon.Files? -
没有。我不。我不确定为什么 py2exe 认为它们丢失了
-
好的,现在我正在尝试使用 PyInstaller。也许我应该打开一个新线程并关闭它。 AFAIK,这里没有使用 py2ex 的解决方案。 fwiw,我尝试使用 cx-freeze 和 packages = [“restkit”、“jinja2”、“restkit.client”]。我也试过 include = ["restkit", "jinja2" , "restkit.client" ]