【问题标题】:Tools / best practices for managing application dependencies?管理应用程序依赖项的工具/最佳实践?
【发布时间】:2011-03-02 18:58:47
【问题描述】:

有哪些工具或最佳实践可用于跟踪和管理我正在开发的软件的依赖关系?我正在使用 Python / Django,到目前为止,我所有的软件需求都是开源的。

我正在开发一个 Web 应用程序,它虽然不大,但有许多依赖项。至少,我想跟踪这些软件和版本号。我想我还想跟踪所需软件的配置,可能还有一些系统级的东西(如果有的话,实例所需软件的进程的用户 ID,以及所需的权限)。

(更好的是,当我准备好部署时,它可以帮助我为应用程序设置服务器。更好的是允许我跟踪用于支持应用程序的 http 和 dns 名称服务器. 但是有传言说 puppet 是做这类事情的工具。)

【问题讨论】:

    标签: python dependency-management


    【解决方案1】:

    使用pip 和virtualenv。使用virtualenv,您可以创建一个“虚拟环境”,将所有 Python 包安装到本地目录中。使用pip install -r,您可以安装特定需求文件中列出的所有包。

    粗略的例子:

    virtualenv /path/to/env --no-site-packages --unzip-setuptools # create virtual environment
    source /path/to/env/bin/activate # activate environment
    easy_install pip # install pip into environment
    source /path/to/env/bin/activate # reload to get access to pip
    pip install -r requirements.txt
    

    requirements.txt 包含这样的行:

    django==1.3
    

    这样做的好处是requirements.txt 既可用作文档,又可用作安装过程的一部分,因此无需同步两者。

    【讨论】:

    • 同意,一个更新:您可以使用 setuptools 创建自己的 pip 包,它们可以列出它们的依赖项。如果您自己的代码库变得太大,您可以将其构建为相互依赖的独立 setuptools 包。
    • 如果一个或一些依赖项是您自己编写但不一定想在 PIP 中发布的发行版怎么办?
    • @Santa:您可以将 URL 提供给您自己的内部仓库,甚至是服务器上的压缩包。
    • 谢谢,这听起来是一个很好的起点,可以让这些事情得到控制。
    • +1 一直在用 virtualenv 和 pip,但从来不知道 requirements.txt
    猜你喜欢
    • 2015-07-29
    • 2022-08-09
    • 2014-07-18
    • 2011-10-15
    • 1970-01-01
    • 2019-08-24
    • 2011-08-16
    • 2014-03-11
    相关资源
    最近更新 更多