我有一个脚本,这个脚本以这样的方式开始,有许多导入:
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 :(得分: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'
找到它正在寻找的模块。