我有一套包,它们一起开发并捆绑到一个分发包中。
为了争论,假设我有充分的理由按以下方式组织我的 python 分发包:
SpanishInqProject/
|---SpanishInq/
| |- weapons/
| | |- __init__.py
| | |- fear.py
| | |- surprise.py
| |- expectations/
| | |- __init__.py
| | |- noone.py
| |- characters/
| |- __init__.py
| |- biggles.py
| |- cardinal.py
|- tests/
|- setup.py
|- spanish_inq.pth
我已经添加了spanish_inq.pth
要添加SpanishInq
到的路径配置文件sys.path
,所以我可以直接导入weapons
,.etc。
我希望能够使用 setuptools 构建轮子并在目录中安装 pip install ,但weapons
无需创建包或命名空间。expectations
characters
SpanishInq
SpanishInq
我的 setup.py:
from setuptools import setup, find_packages
setup(
name='spanish_inq',
packages=find_packages(),
include_package_data=True,
)
使用包含以下内容的MANIFEST.in
文件:
spanish_inq.pth
这在几个方面具有挑战性:
pip install
已将weapons
等直接放在site-packages
目录中,而不是放在SpanishInq
目录中。- 我的
spanish_inq.pth
文件最终在 sys.exec_prefix 目录中,而不是在我的站点包目录中,这意味着其中的相对路径现在没用了。
第一个问题我能够通过将 SpanishInq 变成一个模块来解决(我对此并不满意),但我仍然希望能够在weapons
没有将 SpanishInq 作为命名空间的情况下导入等,为此我需要 SpanishInq添加到 sys.path 中,这是我希望.pth
文件能提供帮助的地方......但我无法让它去它应该去的地方。
所以...
如何让.pth
文件安装到site-packages
目录中?