2015-03-13 335 views
0

我轉換了簡單的「Hello world ... press enter」腳本,並使用cx_Freeze模塊將其轉換爲.exe。它運行良好。當我試圖轉換littlebit複雜腳本並運行它時,我遇到了問題。它自己運行完美的腳本,但.exe不起作用。轉換爲.exe的Python文件(.py)無法執行(Python 3.4 + cx_Freeze)

症狀:.exe啓動,命令行閃爍一次,沒有任何反應。

腳本結構:僅使用os模塊和sys模塊。

腳本funktions:basicly讀取和寫入.txt文件

腳本流程:1. 變化CWD 2.打開.TXT 3.讀取.TXT到列表 4.在改變細胞列表,其中某些字符串位於 5.文件 6.關閉文件 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() 

我從命令行運行.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」。

+0

請顯示您的代碼。 – 2015-03-13 14:11:25

+1

嘗試使用命令行執行它。這樣,在程序退出後,您仍然可以看到最終的堆棧跟蹤/錯誤報告或任何其他標準輸出。 – Maciek 2015-03-13 14:12:42

回答

0

我想通了。我的腳本文件名是問題。在轉換過程中,cx_freeze創建了模塊庫.zip,但模塊main模塊的位置受名稱的影響。名稱中的一個點創建了庫.zip文件的子目錄,因此到主要的的路徑是錯誤的,無法找到。