【发布时间】:2017-10-16 16:02:13
【问题描述】:
我正在开发一个包含两个模块的 python 项目。这些模块密切相关,因此我希望它们位于同一个 git 存储库中,并且能够在我的 IDE 中一起开发它们:
-
module1取决于module2 -
module1有很多其他的重度依赖,module2 没有 -
module1和module2将用于不同的运行时环境 -
module2应该可以单独安装,以便它可以在例如运行。 AWS Lambda
因此,我尝试建立一个项目结构,其中包含一个 repo 中两个文件夹中的两个模块,每个文件夹都有一个setup.py,因此可以打包。这是一个合理的方法吗?
\module1
setup.py
\module1
__init__.py
[scripts].py
\module2
setup.py
\module2
__init__.py
[scripts].py
上述结构应该允许我在本地处理项目,将module2 视为常规模块,但setup.py 文件意味着它可以作为自己的包分发,对吧?
问题是我不能在module1 的setup.py 中包含module2 依赖项:
from setuptools import setup
setup(
name="module1",
version="0.1",
packages=['module1'], # I really need to include module2 scripts here, right?...
install_requires=['pandas', 'numpy', ...]
)
有人对如何解决这个问题有任何建议吗?我能猜到的两个解决方案是:
- 在依赖
module1之前自行打包和发布module2。这使得开发更加不灵活 - 将
module2嵌套在module1中,这样我就可以将它包含在setup(...)函数的packages参数中。这打破了module1应该将module2视为本质上是外部依赖项的清晰度......
【问题讨论】:
标签: python setuptools pypi