【问题标题】:How can I automate installation of local "development mode" packages?如何自动安装本地“开发模式”包?
【发布时间】:2012-08-25 17:49:26
【问题描述】:

如果您在同一个virtualenv 中的多个包上运行python setup.py develop,您可以同时开发它们,而无需在更改后重新安装。

我最近将项目中的功能提取到一个单独的包中,我现在正在以这种方式进行开发。

有没有办法在我的setup.py 文件中表达这种依赖关系,以便新开发人员可以在主项目目录中简单地运行python setup.py develop 一次?

【问题讨论】:

  • 我不知道你打算怎么做。 python setup.py develop 取决于找到 setup.py 所在的目录。用户 Alice 不会在一个目录中拥有包 A,而用户 Bob 在另一个目录中拥有包 A?还是所有目录都是相对设置的?
  • @MarkHildreth - 它们都是源代码管理中同一文件夹层次结构的一部分,因此您可以可靠地指望project_B/setup.pyproject_A/../project_B/setup.py 中。不过,您提出了一个很好的观点,那就是 setup.py 可能不适合这里的工作。
  • 如果您有一个要设置的软件包列表,您只需要一个类似于 makefile 的简短脚本,该脚本 cd 到每个项目并在那里运行 python setup.py develop [user options]。将一个能做到这一点的大师 setup.py 组合在一起应该不难。
  • 开发模式是你私下使用的,强迫别人使用它,因为依赖对我来说听起来不干净。要么你的包足够独立,可以单独工作(开发者的选择),要么它们可以合并到一个包中。
  • 您所描述的可以通过使用zc.buildout) 尤其是mr.developer 扩展来实现。但是,使用 buildout 与使用 virtualenv 管理您的开发环境有很大不同——我不知道这是否适合您。如果您不受限制使用 virtualenv 并考虑切换到 buildout,我可以写一个答案让您入门。

标签: python dependencies development-environment virtualenv setuptools


【解决方案1】:

我相信并担心您的问题的答案只是“不”。

setup.py 只是不符合您的需求。尽管如此,寻找技巧可能会给新开发人员带来更多问题。

很遗憾,我无法提供完美的替代方案:

  • 请查看 Lukas Graf 在评论中描述的 zc.buildout。
  • 分发一个压缩的快速启动工作目录并配置所有内容, 如果你知道你的开发者的平台。
  • 提供一个 shell 脚本来完成整个设置。
  • 教您的开发人员正确使用 setuptool (setup.py) 和 virtualenv, 并让他们为他们需要的每个包显式调用“setup.py develop”。

请记住,显式优于隐式是 Python 禅宗的一部分。 我会选择最后一个,但是 YMMV。

【讨论】:

  • Jürgen,您在赏金期间发布了答案吗?如果是这样,我不介意重新做它来让你获得 50 个代表;你应得的。 ;-)
  • 我在截止日期前大约 3 小时发布,等待是否有更好的出现。
【解决方案2】:

这个模组允许使用python setup.py develop,它允许使用本地开发文件安装development mode。抄自django-tastypie

【讨论】:

    猜你喜欢
    • 2014-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    相关资源
    最近更新 更多