2011-12-22 96 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