我正在研究一个包含两个模块的python项目。这些模块密切相关,因此我希望它们在同一个git repo中,并能够在我的IDE中一起开发它们:module1
取决于module2
module1
还有很多其他严重的依赖项,而module2没有module1
和module2
将在不同的运行时环境中使用module2
应该可单独安装,以便可以在例如一个AWS Lambda
因此,我试图建立一个项目结构,在一个仓库中的两个文件夹中包含两个模块,每个文件夹都有一个setup.py
以便可以打包。这是合理的方法吗?
\module1
setup.py
\module1
__init__.py
[scripts].py
\module2
setup.py
\module2
__init__.py
[scripts].py
上面的结构应该允许我在本地将
module2
作为常规模块进行项目处理,但是setup.py
文件意味着可以将其作为自己的包分发,对吗?问题是我不能在
module2
的module1
中包括setup.py
依赖项: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', ...]
)
有人对如何解决此问题有任何建议吗?我可以猜测的两个解决方案是:
单独包装和发布
module2
,然后再依赖module1
对其进行包装。这使开发变得更加困难将
module2
嵌套在module1
中,以便可以将其包含在packages
函数的setup(...)
参数中。这打破了module1
应该将module2
视为本质上是外部依赖项的明确性... 最佳答案
将它们保留在同一存储库中的主要原因是要在IDE中的两个模块上启用并行工作。我建议将模块保留在单独的存储库中,对pip
使用editable模式,对于setuptools
使用develop模式,以实现“并行”开发。
本质上,当在module2
中使用develop/editable
模式时,将以module1
模式安装module2
。之后,在开发module1
时,您将立即看到对pip install git+<git_directory>
所做的所有更改。
这样做还可以确保git
之类的东西不会损坏,您可以直接从安装
关于python - Python-setuptools-在两个依赖的程序包上工作(在单个存储库中?),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44020652/