我正在编写一个使用 pip 和 virtualenv 来管理其开发环境的 Django 应用程序。
其中一个依赖项 pkgme 带有许多数据文件,这些文件是其“后端”,并在其 setup.py 中配置为data_files=$FOO
(而不是package_data
)。
当 pkgme 查找其后端时,它会查找os.path.join(sys.prefix, "share", "pkgme", "backends")
. 这在 pkgme 已正常安装时效果很好,并且似乎与文档匹配,但当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