如何在py2exe中使用第三方库

1 投票
1 回答
1205 浏览
提问于 2025-04-17 23:34

我有一个用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,然后再重新安装它们。

撰写回答