我正在研究一个包含两个模块的python项目。这些模块密切相关,因此我希望它们在同一个git repo中,并能够在我的IDE中一起开发它们:


module1取决于module2
module1还有很多其他严重的依赖项,而module2没有
module1module2将在不同的运行时环境中使用
module2应该可单独安装,以便可以在例如一个AWS Lambda


因此,我试图建立一个项目结构,在一个仓库中的两个文件夹中包含两个模块,每个文件夹都有一个setup.py以便可以打包。这是合理的方法吗?

\module1
  setup.py
  \module1
    __init__.py
    [scripts].py
\module2
  setup.py
  \module2
    __init__.py
    [scripts].py


上面的结构应该允许我在本地将module2作为常规模块进行项目处理,但是setup.py文件意味着可以将其作为自己的包分发,对吗?

问题是我不能在module2module1中包括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/

10-11 21:28