2011-03-15 87 views
0

我成功創建了我的應用程序的可執行版本。它只是一個基本的數據庫相關應用程序。所以它在一個名爲「data」的同一個目錄中有一個數據庫和一個圖標文件。 當我嘗試使用.exe文件將條目添加到我的數據庫時,會出現「無法打開數據庫文件」等錯誤。但是在同一個目錄中的圖標文件沒有問題。Python .exe問題

任何人都可以幫助我嗎?

謝謝。

這裏是我的setup.py:

from distutils.core import setup 
import py2exe 
from glob import glob 

data_files = [("Microsoft.VC90.CRT", glob(r'c:\dev\ms-vc-runtime\*.*')),("data", glob('Veriler\*'))] 

options = { 
    'py2exe': { 
     'dll_excludes': [ 
      'MSVCP90.dll' 
     ] 
    } 
} 

setup(windows=[{"script": "Nokta Ekleme.pyw","icon_resources":[(1,"Veriler\Alarko.ico")]}], options=options, data_files=data_files) 

玉傢伙。我找到了解決方案。數據文件的目標和源目錄必須具有相同的名稱。所以我把「Veriler」改成了「數據」。現在一切正常。

+0

你能分享它增加了條目到數據庫的代碼? – utdemir 2011-03-15 13:37:10

回答

0

您的globs是否會返回您期望的文件?嘗試print glob('Veriler\*')。您可能需要提供完整的目錄路徑。

另一種選擇是使用你的數據庫必需的DLL已經被遺漏了。

我會推薦pyInstaller在py2exe的一週中的任何一天 - 雖然 - 你可能會發現有很好的里程切換到,因爲它處理抓取必要的文件,包括dll可能是你的問題,遠遠好於py2exe。

+0

你的球體會返回你期望的文件嗎? – Shansal 2011-03-15 14:30:44

+1

您已使用glob獲取py2exe的文件。有可能發生以下情況之一:** 1 ** glob本身存在問題,無法識別您需要的文件,例如,它從錯誤的工作目錄開始。 ** 2 ** py2exe不處理globs,你需要自己指定文件。 – theheadofabroom 2011-03-15 14:34:31

0

我的球體正在返回我期望的文件。 .exe創建後,它們已經從「Veriler」成功複製到「data」目錄。

這增加了一個進入我的數據庫中的一部分:

 con = lite.connect('data\noktalar.sdb') 
     cur = con.cursor() 
     ad = self.tc1.GetValue() 
     cihaz = self.tc2.GetValue() 
     tip = self.nokta_tipleri[self.CB1.GetCurrentSelection()] 
     miktar = self.sp.GetValue() 


     cur.execute('insert into noktalar values(null, ?, ?, ?, ?)', (ad, cihaz, tip, miktar)) 
     con.commit() 
     cur.close() 
     con.close() 
+1

下次編輯原始問題。每個SO問題(應該)導致答案,而不是澄清,編輯等。 – Christian 2011-03-15 14:40:45

+0

好的克里斯蒂安先生。 – Shansal 2011-03-15 15:03:17

+0

樂於幫助。 :) – Christian 2011-03-15 15:59:32