来自python27的cx-freeze exe
Posted
技术标签:
【中文标题】来自python27的cx-freeze exe【英文标题】:cx-freeze exe from python27 【发布时间】:2014-11-11 04:47:46 【问题描述】:我正在使用 python27、Windows7 64 位,但我的 python 版本是 32 位,以避免使用不同的 64 位库时出现一些错误。 我与 cx-freeze 作斗争。我尝试了一些简单的例子,它的工作原理。即使我将一些自己编写的脚本导入到我的 main.py 脚本中,它在我冻结后仍然可以工作。问题是如果我将 matplotlib 添加到文件中。我知道这是一个常见问题,但在我的情况下我无法解决。我的普通 plot.py 脚本有效,请参见下面的代码。不用担心不同的数组,我也尝试了简单的数组,例如 x = [1,2,3,4] 和 y= [1,2,3,4]。 impoert matplotlib as mpl 和下面的行只是为了擦除工具栏,我认为这可能是它不起作用的原因,但事实并非如此。
import matplotlib.pyplot as plt
import csv
import numpy as np
import matplotlib as mpl
mpl.rcParams['toolbar'] = 'None'
# change delimiter to |
csv.register_dialect('pipes', delimiter='|')
# open file data.csv
csv_file_object = csv.reader(open("data.csv", 'r'), dialect='pipes')
# creates headers from the first line of the data file
header = csv_file_object.next()
data = []
for row in csv_file_object:
data.append(row)
data = np.array(data)
y = []
for n1 in range(len(data)):
y.append(float(data[n1][1]))
print y
time = []
for n2 in range(len(data)):
time.append(int((data[n2][0].split('_')[1])[:4]))
print time
plt.plot(time, y)
plt.show()
我已经尝试过以下指令: enter link description here
但它没有用。如果我逐步尝试此操作,则尝试执行 plot.exe 时引发的错误是:
enter link description here
也许这只是一个简单的错误,有人可以帮助我,但我也尝试过使用其他设置文件等。我可以用 GUI 冻结一个简单的程序,所以它不应该是 Tkinter 的问题。
希望有人可以帮助我!
干杯 最大
编辑:我找到了一个具有不同后端的示例,该示例可以正常工作,请参见以下链接: enter link description here 但是我的脚本在冻结后无法作为 exe 运行。
【问题讨论】:
尝试将'tkFileDialog'
添加到包含列表中。正常情况下,cx_Freeze 会自动查找导入的模块,但是通过six.moves
加载时,就麻烦了。
感谢帮助,但没有帮助,仍然是同样的错误:(
我的错误,尝试相同的操作,但使用 'FileDialog'
,与错误消息中的名称相同。我不知道为什么有两个名字非常相似的东西。
是的,我已经尝试了这两个包,但也没有用..
您确定它与您显示的错误完全一致吗?你能显示你的 setup.py 文件吗?
【参考方案1】:
好的,我找到了解决问题的方法。
我的安装文件如下所示:
import cx_Freeze
import sys
import matplotlib
base = None
if sys.platform == "win32":
base = "Win32GUI"
executables = [
cx_Freeze.Executable("newtry.py", base = base),
]
build_exe_options = "includes":["FileDialog"],
"include_files":["test.csv"],
"excludes":[],
cx_Freeze.setup(
name = "script",
options = "build_exe": build_exe_options,
version = "0.0",
description = "A basic example",
executables = executables)
感谢 Thomas K. 关于 FileDialog 的提示,因为没有包含“FileDialog”,它将无法工作。
此外,要在我的可执行文件中导入 matplotlib,我必须使用以下代码:
import matplotlib
from matplotlib import pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
如果我只使用例如:
import matplotlib.pyplot as plt
它不起作用。我不知道为什么,但它没有?有人回答吗?
有了这个头文件和这个 setup.py 文件,我可以在我的主程序中使用 matplotlib:
plt.plot([1,2,3])
plt.show()
我希望如果有人和我有同样的问题,他或她可以使用我的例子。
干杯 最大
【讨论】:
以上是关于来自python27的cx-freeze exe的主要内容,如果未能解决你的问题,请参考以下文章
在 ubuntu 12.04 下使用 cx-freeze 将 Python 脚本转换为 Windows exe 文件
可以在 Ubuntu 中使用 cx-freeze 将 python 脚本冻结为 Windows 可执行文件吗?
Centos7/RedHat7 下 python3使用cx-freeze打包matplotlib程序遇到的问题和解决办法