我使用Python 3.6和cx_freeze为我创建的Python游戏创建可执行文件。该游戏是一个随机句子生成器,它使用三个文本文件作为其词典。
e.g。 " names.txt中":
$.getJSON("http://EXTERNAL_DOMAIN_OR_IP_LOCATION/?param=value&callback=?",
function(data) {
doSomethingWith(data);
});
当我尝试创建构建然后运行exe时,我收到以下错误:
def random_name():
line_num = 0
selected_line = ''
with open('names.txt') as f:
for line in f:
line = f.readline()
if not line: break
line_num += 1
if random.uniform(0, line_num) < 1:
selected_line = line
return selected_line.strip()
我提到代码使用单独的txt文件的原因是我认为这可能是错误的原因,尽管我不理解所有错误消息。
如果这是正确的,我如何确保cx_freeze包含这些额外的文件?
答案 0 :(得分:0)
问题不是冻结,而是文件&#39; names.txt&#39;地点。您确定names.txt与.py文件位于同一位置吗?我复制了你的代码示例并运行它。它给了我同样的错误。所以我创建了一个文件names.txt,它已经工作了
更新的答案: 我的setup.py如下:
import sys
from cx_Freeze import setup, Executable
# Dependencies are automatically detected, but it might need fine tuning.
build_exe_options = {"packages": ["os"], "excludes": ["tkinter"]}
# GUI applications require a different base on Windows (the default is for a
# console application).
base = None
if sys.platform == "win32":
base = "Win32GUI"
setup( name = "Random Crime Generator",
version = "1.0",
description = "A random crime generator for police states",
options = {"build_exe": build_exe_options},
executables = [Executable("rcg.py", base=base)])
rcg.py如下:
import random
def random_name():
line_num = 0
selected_line = ''
with open('names.txt') as f:
for line in f:
line = f.readline()
if not line: break
line_num += 1
if random.uniform(0, line_num) < 1:
selected_line = line
return selected_line.strip()
对于与rcg.py位于同一文件夹中的names.txt,我只添加了以下内容:
Apple
Banana
Carrots
这就是全部,它运行良好。我是从Windows运行的。