如何在py2exe中使用第三方库
我有一个用Python写的脚本,它使用了ClientCookie和ClientForm这两个库。我想通过py2exe把这个脚本变成一个可执行文件,所以我把"ClientCookie"和"ClientForm"放在了脚本的目录里,并创建了一个名为"setup.py"的文件,内容如下:
from distutils.core import setup
import py2exe
setup(
console = ['some_script.py'],
options = {
'py2exe': {
'packages': ["ClientCookie", "ClientForm"]
}
}
)
当我尝试创建可执行文件时,出现了以下错误:
> setup.py py2exe
*** searching for required modules ***
Traceback (most recent call last):
File "E:\projects\some_project\setup.py", line 9, in <module>
'packages': ["ClientCookie", "ClientForm"]
File "E:\software\Python27\lib\distutils\core.py", line 152, in setup
dist.run_commands()
File "E:\software\Python27\lib\distutils\dist.py", line 953, in run_commands
self.run_command(cmd)
File "E:\software\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "E:\software\Python27\lib\site-packages\py2exe\build_exe.py", line 243, in run
self._run()
File "E:\software\Python27\lib\site-packages\py2exe\build_exe.py", line 296, in _run
self.find_needed_modules(mf, required_files, required_modules)
File "E:\software\Python27\lib\site-packages\py2exe\build_exe.py", line 1306, in find_needed_modules
mf.import_hook(f)
File "E:\software\Python27\lib\site-packages\py2exe\mf.py", line 719, in import_hook
return Base.import_hook(self,name,caller,fromlist,level)
File "E:\software\Python27\lib\site-packages\py2exe\mf.py", line 136, in import_hook
q, tail = self.find_head_package(parent, name)
File "E:\software\Python27\lib\site-packages\py2exe\mf.py", line 204, in find_head_package
raise ImportError, "No module named " + qname
ImportError: No module named ClientCookie
这是为什么呢?我哪里做错了?我该怎么解决这个问题?
1 个回答
0
不要把“ClientCookie”和“ClientForm”放在你的脚本目录里,按照以下步骤操作:
1. 把它们放在“C:\Python27\Lib\site-packages”这个目录下(这是安装第三方库的默认位置)。另外,看起来你是手动创建这些包的,所以要仔细检查一下有没有依赖问题。
2. 把你的主Python脚本和setup.py脚本放在Python的根目录,也就是“C:\Python27”,在我这里是这个位置。
3. 运行setup.py。
注意:如果你还是遇到同样的问题,可以尝试完全卸载Python和py2exe,然后再重新安装它们。