我正在寫一個使用PIP &的virtualenv來管理其開發環境Django應用程序。如何在Python中分發/訪問數據文件?
之一依賴性,pkgme,附帶了許多的數據文件,其是它的「後端」和在其setup.py配置有data_files=$FOO
(而不是package_data
)。
當pkgme查找其後端,它看起來在os.path.join(sys.prefix, "share", "pkgme", "backends")
。當pkgme已經正常安裝這個偉大的工程,而且似乎符合documentation但並沒有工作時pkgme安裝爲一個雞蛋。
在那裏,數據文件$VIRTUAL_ENV/lib/python2.7/site-packages/pkgme-0.1-py2.7.egg/share
而不是預期的$VIRTUAL_ENV/share
下安裝。
這給我留下了兩個問題:
- 我應該使用比上述
os.path.join
以外的東西找到數據文件無論我們使用的是雞蛋安裝或傳統的系統安裝?如果是這樣,什麼? - 我應該發佈我的數據文件不同,使他們在一個雞蛋更容易獲得?
請注意,我知道pkgutil.get_data
,但寧願不使用它。我不感興趣的內容這些數據文件的,我想知道他們的位置代替,這樣我就可以執行它們。
我目前的計劃是要做到這一點:
- 使用
package_data
而不是data_files
- 變化pkgme尋找相對後端到
pkgme.__file__
而非sys.prefix
謝謝PJE。很高興知道'__file__'檢查。我採用了類似於我在問題中提出的方法,但是額外使用了入口點來處理一些後端。 – jml