在setup.py中,我指定了如下包数据:
packages=['hermes'],
package_dir={'hermes': 'hermes'},
package_data={'hermes': ['templates/*.tpl']},
我的目录结构是
hermes/
|
| docs/
| ...
| hermes/
|
| __init__.py
| code.py
| templates
|
| python.tpl
|
| README
| setup.py
问题是我需要使用源代码中templates目录中的文件,这样我就可以写出python代码(这个项目是一个解析器生成器)。我似乎无法从代码中正确地包含和使用这些文件。有什么想法吗?
标准的pkgutil module's ^{} function 将计算数据相对于包的路径,并通过Python用于导入
hermes
包的任何模块加载程序为您检索数据:当然,在某些情况下,您可以使用从
hermes.__file__
计算的路径读取数据,但是如果您计划分发项目,请考虑它可能以不同的方式安装在最终用户的计算机上:作为普通文件,部署在压缩的egg存档中,等等,在后一种情况下,Python将使用zipimporter
导入您的hermes
模块,从而阻止您执行正常的open(path).read()
:如果您可以在} ,它可以提供相同的结果,但会添加其他功能。
distribute
代码基上添加一个运行时依赖项,那么您可能希望consdider查看^{相关问题 更多 >
编程相关推荐