Python 文件 (.py) 转换为 .exe 无法执行 (Python 3.4 + cx_Freeze)
Python file (.py) converted to .exe fails to execute (Python 3.4 + cx_Freeze)
我转换了简单的 "Hello world ... press enter" 脚本,并使用 cx_Freeze 模块将其转换为 .exe。 运行没问题。当我尝试转换 littlebit 复杂脚本并 运行 它时,我遇到了问题。脚本本身 运行 很完美,但 .exe 无法运行。
症状:.exe启动,命令行闪烁一次,没有任何反应。
脚本结构:仅使用 os 模块和 sys 模块。
脚本功能:基本上读写 .txt 文件
脚本流程:
1.更改cwd
2. 打开.txt
3. 读取 .txt 到列表
4.更改列表中特定字符串所在的单元格
5. 将列表写回文件
6. closes 文件
7. 等待用户结束 (sys.stdin.readline())
我想不通哪里出了问题。
import os
import sys
#change cwd
os.chdir('S:/user_name/')
#locate the line where "sertain_string: False" is
file = open('Test_dir/test.txt', 'r+')
lines= file.readlines()
file.close()
x = 0
while(lines[x] != "certain_string: False\n"):
x = x + 1
continue
else:
print("certain_string is on line", + x)
print("\n")
#Read the lines to the list
file = open('Test_dir/test.txt', 'r+')
lines = fiel.readlines()
file.close()
print("\n")
#Change the cell where "certain_string: false" is to "certain_string: True"
lines[x] = 'certain_string: True\n'
print("\n")
#write the list back to the file
file = open('Test_dir/test.txt', 'w+')
file.writelines(lines)
file.close()
print("Done... press enter:")
r = sys.stdin.readline()
I 运行 来自命令行的 .exe 文件。
错误报告:
cf_freeze console.py line 26:
Code = importer.get_code(moduleName)
zipimport.ZipImportError: Can't find module 'client_v.0.02__main__'.
我不明白这个。它试图从 .zip 文件中找到 client_v.0.02__main__ 模块,这是在 .py 到 .exe 转换期间创建的模块库。
我的 .py 文件名为 "Client_v.0.02"。
我想通了。我的脚本文件名是问题所在。在转换过程中,cx_freeze 制作了模块库 .zip,但脚本 main 模块的位置受名称影响。名称中的一个点为库 .zip 文件创建了一个子目录,因此 main 的路径是错误的,无法找到。
我转换了简单的 "Hello world ... press enter" 脚本,并使用 cx_Freeze 模块将其转换为 .exe。 运行没问题。当我尝试转换 littlebit 复杂脚本并 运行 它时,我遇到了问题。脚本本身 运行 很完美,但 .exe 无法运行。
症状:.exe启动,命令行闪烁一次,没有任何反应。
脚本结构:仅使用 os 模块和 sys 模块。
脚本功能:基本上读写 .txt 文件
脚本流程: 1.更改cwd 2. 打开.txt 3. 读取 .txt 到列表 4.更改列表中特定字符串所在的单元格 5. 将列表写回文件 6. closes 文件 7. 等待用户结束 (sys.stdin.readline())
我想不通哪里出了问题。
import os
import sys
#change cwd
os.chdir('S:/user_name/')
#locate the line where "sertain_string: False" is
file = open('Test_dir/test.txt', 'r+')
lines= file.readlines()
file.close()
x = 0
while(lines[x] != "certain_string: False\n"):
x = x + 1
continue
else:
print("certain_string is on line", + x)
print("\n")
#Read the lines to the list
file = open('Test_dir/test.txt', 'r+')
lines = fiel.readlines()
file.close()
print("\n")
#Change the cell where "certain_string: false" is to "certain_string: True"
lines[x] = 'certain_string: True\n'
print("\n")
#write the list back to the file
file = open('Test_dir/test.txt', 'w+')
file.writelines(lines)
file.close()
print("Done... press enter:")
r = sys.stdin.readline()
I 运行 来自命令行的 .exe 文件。
错误报告:
cf_freeze console.py line 26:
Code = importer.get_code(moduleName)
zipimport.ZipImportError: Can't find module 'client_v.0.02__main__'.
我不明白这个。它试图从 .zip 文件中找到 client_v.0.02__main__ 模块,这是在 .py 到 .exe 转换期间创建的模块库。 我的 .py 文件名为 "Client_v.0.02"。
我想通了。我的脚本文件名是问题所在。在转换过程中,cx_freeze 制作了模块库 .zip,但脚本 main 模块的位置受名称影响。名称中的一个点为库 .zip 文件创建了一个子目录,因此 main 的路径是错误的,无法找到。