2011-12-22 87 views
2

如何在Linux和Windows上使用的python包中包含properties/ini文件?python包中不包含屬性文件(ini文件)

我試圖通過將ini文件的項目文件夾下創建一個Python包,這樣我可以通過使用類似的代碼訪問它:

File = open("props.ini", 'r') 

然後我就包部署到.tar.gz文件作爲例如:

$ python setup.py sdist 

然後我安裝包(具有Linux機器):

$ sudo pip install package_name.tar.gz 

我在這裏得到我的.py文件:

/usr/local/lib/python2.7/dist-packages/package_name/*.py 

我讓我的劇本在這裏打開程序:

/usr/local/bin/myScript 

但我沒有得到我的.ini文件。

+0

我也嘗試: 添加此線到我的setup.py文件: data_files = [( '',[ '項目/ props.properties'])], (我猶豫在這行中指定一個目錄,因爲如果有人沒有python 2.7或者使用的是非linux機器,這將是一個問題) 而且這會將我的.ini文件放在這裏: /usr/local /props.properties 由於我的屬性文件不與我的包的其餘部分,我的程序無法找到/訪問它。 – Ari 2011-12-22 09:20:05

回答

2

這樣做的一種方法是將您的配置文件放在源代碼下的目錄中。

例如,如果您的源代碼位於src目錄下,則可以在src/config下添加配置文件。在此之後,在src目錄中的任何代碼,你可以使用訪問配置文件:

config_filename = os.path.join(os.path.dirname(os.path.realpath(__file__)), 
           'config', <filename>) 

要保持相同的目錄結構時的代碼分佈,在setup.py需求setup功能瞭解這些新文件使用package_data參數:

setup(
... 
package_data={'src': ['config/*',]}, 
... 
) 
+0

閱讀完您的評論後,我試着按照您的說法(使用您的命名約定)進行操作。然後我嘗試運行我的程序(在創建程序包之前)。結果是: IOError:[Errno 20]不是目錄:'.../Project/myFile.py/config/props.ini' – Ari 2011-12-22 15:09:10

+0

當然還有「myFile.py」,「config」和「props.ini 「不是目錄(不應該是目錄)。 os.path.join應該做什麼? – Ari 2011-12-22 15:57:18

+0

我編輯了我的回覆。我希望這次更清楚。 – jcollado 2011-12-22 16:17:23