2016-05-12 68 views
1

我有开始喜欢这个有很多进口脚本的问题:导入错误:没有模块命名公共 - 与py2exe

from reportlab.graphics import shapes 
from reportlab.lib.utils import ImageReader 
from reportlab.graphics import barcode 
from reportlab.lib.units import mm 
from reportlab.pdfbase.pdfmetrics import stringWidth 
import reportlab.rl_settings 
import PIL 
from cStringIO import StringIO 
import labels 
import pyodbc 
import pandas 
from os.path import expanduser 
from time import sleep 
import sys 

我与py2exe大量努力甚至让一个可执行文件。我终于用下面的安装脚本管理它(其中大部分只是从类似的问题复制和粘贴,并建议在stackoverflow)。

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

sys.setrecursionlimit(5000) 

distutils.core.setup(
    options = { 
     "py2exe": { 
      "dll_excludes": ["MSVCP90.dll"] 
     } 
    }, 
) 

sys.path.append('C:\\WINDOWS\\WinSxS\\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4148_none_5090ab56bcba71c2') 

packages=[ 
    'reportlab', 
    'reportlab.graphics' 
    'reportlab.lib.utils' 
    'reportlab.rl_settings' 
    'reportlab.lib.units' 
    'reportlabl.pdfbase.pdfmetrics', 

], 

os.environ["PATH"] = \ 
    os.environ["PATH"] + \ 
    os.path.pathsep + os.path.split(zmq.__file__)[0] 

setup(console=[{"script": "working.py"}], 
     options={ 
      "py2exe": { 
       "includes": 
       ["zmq.utils", "zmq.utils.jsonapi", 
       "zmq.utils.strtypes"] } }) 

我确定我的脚本不雅。它有三个连接的定义函数和一个最终输出。

try: 
    makeyourlabels() 
except: 
    Print "Sorry, something went wrong." 

当我运行该文件,我得到一个错误:

Traceback (most recent call last): 
    File "working.py", line 3, in <module> 
    File "reportlab\graphics\barcode\__init__.pyc", line 72, in <module> 
    File "reportlab\graphics\barcode\__init__.pyc", line 42, in _reset 
    File "reportlab\graphics\barcode\widgets.pyc", line 162, in <module> 
    File "reportlab\graphics\barcode\widgets.pyc", line 95, in _BCW 
    File "reportlab\lib\utils.pyc", line 243, in rl_exec 
    File "<string>", line 1, in <module> 
    File "<string>", line 1, in <module> 
ImportError: No module named common 

如果任何人都可以做的这一切任何意义,让我的.exe文件运行时,我将是有史以来不胜感激!

回答

0

由于问题中没有可测试的代码,我不能保证这会解决您的问题,但我可以解释为什么会出现此错误。这是因为py2exe未将reportlab.graphics.barcode.common捆绑到您的.exe中。

我怎么知道这一点,我也跟着回溯,看看有什么ReportLab的在rl_exec呼叫在做,原来是让使用exec此调用:

from reportlab.graphics.barcode.common import I2of5 

但因为进口只是做动态py2exe不知道这个包的需要。

那么你如何解决它?只需将'reportlab.graphics.barcode.common'添加到您的软件包列表中,这应该有助于py2exe找到它正在寻找的模块。

+0

干杯B8vrede。这似乎解决了这个特定的错误,但我只是另一个错误,作为reportlab软件包的一部分,另一个缺失的模块。我能做些什么来导入所有必要的模块? –

+0

我认为你的情况最好的办法是确保你的导入是特定的,所以不是'从reportlab.graphics导入形状',而是'从reportlab.graphics.shapes导入绘图'(或任何你需要的形状)。这可以防止加载所有不必要的类,这些类都有可能导致导入错误的依赖关系。 – B8vrede

+0

我会试试看。我导入包pylabels(https://github.com/bcbnz/pylabels),所以我希望没有任何内容导入可能导致问题的函数。 –

相关问题