来自python27的cx-freeze exe

时间:2014-11-11 04:47:46

标签: python-2.7 matplotlib cx-freeze

我正在使用python27,Windows7 64bit,但我的python版本为32位,以避免使用不同的64位库出现错误。 我对cx-freeze很挣扎。我尝试了一些简单的例子,它的确有效。即使我将一些自编写的脚本导入到我的main.py脚本中,它在冻结之后仍然可以工作。问题是我将matplotlib添加到文件中。我知道这是一个常见问题,但我无法解决这个问题。我的普通plot.py脚本有效,请参阅下面的代码。不要担心不同的数组,我也尝试使用简单的数组,如x = [1,2,3,4]和y = [1,2,3,4]。作为mpl的impoert matplotlib和下面的行只是为了擦除工具栏,我认为这可能是它不起作用的原因,但它不是。

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运行。

1 个答案:

答案 0 :(得分: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()

我希望如果某人有像我这样的问题,他或她可以使用我的例子。

干杯 最大