【发布时间】:2018-06-25 22:51:52
【问题描述】:
我有一套包,它们一起开发并捆绑到一个分发包中。
为了争论,假设我有充分的理由按以下方式组织我的 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 来构建轮子并在 SpanishInq 目录中安装 pip weapons、expectations 和 characters,但 没有 使 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 目录中,而不是在我的 site-packages 目录中,这意味着其中的相对路径现在没有用了。
我能够通过将 SpanishInq 转换为模块来解决的第一个问题(我对此并不满意),但我仍然希望能够在没有将 SpanishInq 作为命名空间的情况下导入 weapons 等,并且为此,我需要将 SpanishInq 添加到 sys.path,这是我希望 .pth 文件能提供帮助的地方......但我无法让它去它应该去的地方。
所以...
如何将.pth 文件安装到site-packages 目录中?
【问题讨论】:
-
您希望能够编写
import weapons和 forweapons/在安装时存储在SpanishInq目录中?为什么?SpanishInq有什么可能的用途? -
仅仅作为一个容器。让我们假设在 SpanishInq 中可能有几十个包,而不是把站点包弄得乱七八糟,我们希望它们很好地组合在一起,因为无论如何它们都作为一个包安装。为了让事情更有趣,假设我们有几个项目(每个项目都在不同的环境中工作),每个项目可能会分叉 SpanishInqProject,每个分叉可能包含不同数量的包。假设我有一些需要处理的限制。我有充分的理由。
-
...虽然我很想听听以这种方式对包进行分组的缺点或注意事项。
标签: python python-2.7 setuptools python-packaging pth