【问题标题】:py2exe error: raise ImportError, "No module named " + qnamepy2exe 错误:引发 ImportError,“未命名模块”+ qname
【发布时间】:2014-01-05 01:02:41
【问题描述】:

我有一个 python 程序 MyPictures.py 有以下导入

import os 
import gtk 
from os.path import isfile, join 
import shutil
import Image

我写了以下设置,py

from distutils.core import setup
import py2exe
#import os
import sys

__import__('gtk')
m = sys.modules['gtk']
gtk_base_path = m.__path__[0]

setup(
    name = 'MyPictures',
    description = 'Some handy tool',
    version = '1.0',

    windows = [
                  {
                      'script': 'MyPictures.py',
                  }
              ],

    options = {
                  'py2exe': {
                      'packages':'encodings',
                      'includes': 'cairo, pango, pangocairo, atk, gobject,',
                  }
              },
)  

我跑了

python.exe setup.py 安装

输出是

running install running build running install_egg_info 删除 c:\Python27\Lib\site-packages\MyPictures-1.0-py2.7.egg-info 写作 c:\Python27\Lib\site-packages\MyPictures-1.0-py2.7.egg-info

然后我跑了

python.exe setup.py install

running install
running build
running install_egg_info
Removing c:\Python27\Lib\site-packages\MyPictures-1.0-py2.7.egg-info
Writing c:\Python27\Lib\site-packages\MyPictures-1.0-py2.7.egg-info

然后我跑了

python.exe setup.py py2exe

running py2exe
*** searching for required modules ***
Traceback (most recent call last):
  File "setup.py", line 37, in <module>
    'includes': 'cairo, pango, pangocairo, atk, gobject,',
  File "C:\Python27\Lib\distutils\core.py", line 152, in setup dist.run_commands()
  File "C:\Python27\Lib\distutils\dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "C:\Python27\Lib\distutils\dist.py", line 972, in run_command cmd_obj.run()
  File "c:\Python27\lib\site-packages\py2exe\build_exe.py", line 243, in run self._run()
  File "c:\Python27\lib\site-packages\py2exe\build_exe.py", line 296, in _run 
    self.find_needed_modules(mf, required_files, required_modules)
  File "c:\Python27\lib\site-packages\py2exe\build_exe.py", line 1297, in find_needed_modules mf.import_hook(mod)
  File "c:\Python27\lib\site-packages\py2exe\mf.py", line 719, in import_hook
    return Base.import_hook(self,name,caller,fromlist,level)
  File "c:\Python27\lib\site-packages\py2exe\mf.py", line 136, in import_hook
    q, tail = self.find_head_package(parent, name)
  File "c:\Python27\lib\site-packages\py2exe\mf.py", line 204, in find_head_package         raise ImportError, "No module named " + qname
ImportError: No module named

如何解决此错误?这是我第一次使用py2exe,在此先感谢。

【问题讨论】:

    标签: python py2exe


    【解决方案1】:

    packagesincludes 应该是 list 类型。将 options 部分替换为:

        options = {
                      'py2exe': {
                          'packages':['encodings'],
                          'includes': ['cairo', 'pango', 'pangocairo', 'atk', 'gobject'],
                      }
                  },
    

    【讨论】:

    • 感谢 micromoses,你摇滚。它可以正常工作。
    • 该 exe 在生成它的 win8.1 中正常运行。然后我将 dist 文件夹复制到另一台 win7 计算机(安装了 MS Visual C++ 2008 Redistributable Pkg pub 29-11-2007,没有安装 python)。当我执行 exe 时,我看到以下错误,我不知道我缺少什么 Traceback (most recent call last): File "MyPictures.py", line 14, in &lt;module&gt; File "gtk\__init__.pyc", line 40, in &lt;module&gt; File "gtk\_gtk.pyc", line 12, in &lt;module&gt; File "gtk\_gtk.pyc", line 10, in __load ImportError: DLL load failed: A dynamic link library (DLL) initialization routine failed.​
    • 我知道一些关于 distutils 的东西,但对 windows 知之甚少。我会尝试在与目标系统(win7)相同的平台上构建包,但不确定。无论如何,您应该在 SO 中为此发布一个新问题。
    • 感谢 micromoses,我使用pyinstaller 解决了这个问题,而不是使用py2exe。再次感谢。
    猜你喜欢
    • 2010-09-25
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    相关资源
    最近更新 更多