我有一個Python應用程序。它加載配置文件(以及各種其他文件)由 做的東西,如:py2exe和文件系統
_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
CONFIG_DIR = os.path.join(_path, 'conf')
這工作得很好。然而,當我打包帶py2exe應用,不好的事情發生了:
File "proj\config.pyc", line 8, in <module>
WindowsError: [Error 3] The system cannot find the path specified: 'C:\\proj\
\dist\\library.zip\\conf'
顯然,這是一個無效的路徑...什麼是這樣做的更強大的方法嗎?我不想 想要在程序中指定絕對路徑,因爲它可以放在不同的 文件夾中。我應該只是說「如果它說文件夾的名稱是'library.zip',然後去 一級更低的'dist'文件夾」?
請注意,我有相當嵌套的目錄層次結構...例如,我有一個 模塊gui.utils.images,存儲在「GUI/utils的/ images.py」,並使用其路徑 訪問「例如,gui/images/ok.png「。現在py2exe版本 會嘗試訪問「proj/dist/library.zip/gui/images/ok.png」,或者其他的東西, ,這些都不起作用。
嗯我會給那一槍。即時通訊編寫一個函數getAbsPath()採用相對路徑,只是返回正確的東西打開。它會檢測它是否在library.zip中,如果是,它會轉到另一個dir上,而不是實際的fs – Claudiu 2009-10-02 20:41:26
您也可以嘗試將包含文件放到包目錄中,因爲'__init__ .py的'__path__'屬性將存儲'__init __。py'腳本的路徑。 – fucx 2009-10-03 07:52:29