来自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的主要内容,如果未能解决你的问题,请参考以下文章

Python cx-freeze 快捷方式图标

在 ubuntu 12.04 下使用 cx-freeze 将 Python 脚本转换为 Windows exe 文件

可以在 Ubuntu 中使用 cx-freeze 将 python 脚本冻结为 Windows 可执行文件吗?

cx-freeze 可执行文件在导入 re 时崩溃

Centos7/RedHat7 下 python3使用cx-freeze打包matplotlib程序遇到的问题和解决办法

使用 cx-freeze 构建 PySide 程序 osx 的奇怪错误