python添加包路径_python – setuptools:包数据文件夹位置

选项1:作为包数据安装

将数据文件放在Python包的根目录中的主要优点

是它可以让你避免担心文件将存在于用户的位置

系统,可能是Windows,Mac,Linux,某些移动平台,或者是一个Egg.您可以

总是找到相对于Python包root的目录数据,无论它在何处或如何安装.

例如,如果我有这样的项目布局:

project/

foo/

__init__.py

data/

resource1/

foo.txt

您可以向__init__.py添加一个函数来定位数据的绝对路径

文件:

import os

_ROOT = os.path.abspath(os.path.dirname(__file__))

def get_data(path):

return os.path.join(_ROOT, 'data', path)

print get_data('resource1/foo.txt')

输出:

/Users/pat/project/foo/data/resource1/foo.txt

将项目作为Egg安装后,数据路径将发生变化,但代码无需更改:

/Users/pat/virtenv/foo/lib/python2.6/site-packages/foo-0.0.0-py2.6.egg/foo/data/resource1/foo.txt

选项2:安装到固定位置

另一种方法是将数据放在Python包之外

之一:

>通过配置文件传入数据的位置,

命令行参数或

>将位置嵌入Python代码中.

如果您计划分发您的项目,这是不太理想的.如果您确实想这样做,可以通过传入元组列表为每组文件指定目标,在目标系统上的任何位置安装数据:

from setuptools import setup

setup(

...

data_files=[

('/var/data1', ['data/foo.txt']),

('/var/data2', ['data/bar.txt'])

]

)

更新:递归grep Python文件的shell函数示例:

atlas% function grep_py { find . -name '*.py' -exec grep -Hn $* {} \; }

atlas% grep_py ": \["

./setup.py:9: package_data={'foo': ['data/resource1/foo.txt']}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值