中的配置文件我有一個具有以下結構的Python項目:問題訪問一個Python蛋
package1
class.py
class2.py
...
package2
otherClass.py
otherClass2.py
...
config
dev_settings.ini
prod_settings.ini
我寫這個轉換爲具有相同的文件結構一個雞蛋setup.py文件。 (當我使用zip程序檢查它的結構看起來是相同的。)有趣的是,當我從我的IDE運行Python代碼時,它工作正常,可以訪問配置文件;但是當我嘗試從使用egg的不同Python腳本運行它時,似乎無法在egg中找到配置文件。如果我將配置文件放到一個相對於的目錄中,並且調用 Python腳本(在蛋的外部),它就可以工作 - 但這種做法會使得擁有一個包含程序所有功能的自包含蛋的目的失敗可以從任何地方調用。只要他們不使用配置文件,我可以使用任何類/模塊並運行egg中的任何函數......但是如果他們這樣做了,egg就找不到它們,所以函數不起作用。
任何幫助將非常感謝!我們對這裏的雞蛋很感興趣,並不知道從哪裏開始。
我很困惑......我可能會有點慢,因爲這些概念對我來說是新的,所以請耐心等待。我必須更改我的Python類中使用配置文件的代碼來使用pkg_resources模塊,而不是對其進行硬編碼?我現在加載配置文件的行是'config = ConfigParser.RawConfigParser()config.read(「.. \\ config \\」+ environment +「_settings.ini」)'...我應該改變這個至? – froadie 2010-06-18 16:39:24
@froadie:這是正確的。你需要像'config.read(resource_stream(__ name__, 「.. \\ \\配置」 +環境+ 「_settings.ini」)'此外,您還需要導入資源管理模塊:'從pkg_resources才能導入resource_stream' – 2010-06-18 16:49:35
我想類似的東西 - 'config.read(pkg_resources.resource_filename(__ name__, 「.. \\ \\配置」 +環境+ 「_settings.ini」))'(resource_filename而不是resource_stream因爲讀取文件名) - 它運作時,我運行它,但我仍然得到一個錯誤,當試圖從蛋中調用它,雖然這是一個新的 - 'KeyError:'myPackageName \\ .. \\ config \\ dev_settings.ini'' – froadie 2010-06-18 16:56:35