导入错误:没有模块命名常见 - py2exe问题

时间:2016-05-12 16:15:30

标签: python dll exe py2exe reportlab

我有一个脚本,这个脚本以这样的方式开始,有许多导入:

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运行,我将永远感激不尽!

1 个答案:

答案 0 :(得分:0)

由于问题中没有可测试的代码,我不能保证这会解决您的问题,但我可以解释为什么会出现此错误。这是因为[TestMethod] public void EnsureHomeAboutMatches() { // Arrange var context = new StubHttpContextForRouting(requestUrl: "~/home/about"); var routes = new RouteCollection(); RouteConfig.RegisterRoutes(routes); // Act RouteData routeData = routes.GetRouteData(context); // Assert Assert.IsNotNull(routeData); } 未将py2exe捆绑到您的.exe。

我如何知道这一点,我跟踪回溯以查看Reportlab在reportlab.graphics.barcode.common调用中正在做什么,事实证明是使用rl_exec进行此调用:

exec

但是因为导入只是动态完成from reportlab.graphics.barcode.common import I2of5 不知道是否需要这个包。

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