Python - setuptools - 处理两个依赖包(在一个repo中?)

时间:2017-05-17 09:22:21

标签: python setuptools pypi

我正在开发一个包含两个模块的python项目。模块是非常密切相关的,因此我希望它们在同一个git仓库中,并且能够在我的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文件意味着它可以像它自己的包那样分发,对吧?

问题在于我无法在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参数中。这打破了prepare(for:sender:)应该对待segue.destinationViewController的清晰度,好像它本质上是一个外部依赖...

1 个答案:

答案 0 :(得分:3)

将它们保存在同一存储库中的主要原因是在IDE中的两个模块上启用并行工作。我建议将模块保存在单独的存储库中,并使用pip模式setuptoolseditable模式进行module2以实现“并行”开发。

基本上,当您在develop/editable中使用module1时,您将以module2模式安装module1。此后,您会在开发pip install git+<git_directory>

时立即看到对git所做的所有更改

执行相同操作还可确保dplyr之类的内容不会中断,您可以直接从Bout安装