【发布时间】:2011-12-29 13:26:39
【问题描述】:
我正在编写一个使用 pip 和 virtualenv 来管理其开发环境的 Django 应用程序。
其中一个依赖项pkgme 带有许多数据文件,这些文件是其“后端”,并在其 setup.py 中配置为data_files=$FOO(而不是package_data)。
当 pkgme 查找其后端时,它会查找 os.path.join(sys.prefix, "share", "pkgme", "backends")。这在 pkgme 已正常安装时效果很好,并且似乎与 documentation 匹配,但当 pkgme 作为鸡蛋安装时 不 工作。
在那里,数据文件安装在$VIRTUAL_ENV/lib/python2.7/site-packages/pkgme-0.1-py2.7.egg/share 下,而不是预期的$VIRTUAL_ENV/share。
这给我留下了两个问题:
- 是否应该使用除上述
os.path.join之外的其他工具来查找数据文件,而不管我们是使用egg 安装还是传统系统安装?如果有,是什么? - 我是否应该以不同的方式分发我的数据文件,以使它们在鸡蛋中更容易获得?
请注意,我知道pkgutil.get_data,但不想使用它。我对这些数据文件的内容不感兴趣,我想知道它们的位置,以便执行它们。
我目前的计划是这样做:
- 使用
package_data而不是data_files - 更改 pkgme 以查找相对于
pkgme.__file__而不是sys.prefix的后端
【问题讨论】:
-
考虑在 setup.py 中将
zip_safe设置为 False,这样它就不会生成 .egg 文件。
标签: python setuptools distutils egg