Python 具有私人开发的依赖项的Pylons应用程序部署

Python 具有私人开发的依赖项的Pylons应用程序部署,python,deployment,setuptools,distutils,Python,Deployment,Setuptools,Distutils,在我的组织中,我们有两个内部开发的Python包。例如,让我们称它们为Foo和Bar。两者都是在独立的Git存储库中开发的Foo是一个挂架应用程序,它使用栏中的某些库函数。两者都不是公开分发的 当我们部署Foo时,通常会从源代码管理导出最新版本,并在virtualenv中运行setup.py develope。这很好用 问题是,我们需要某种方式为部署Foo的每个环境分发Bar。显然,我们不能在setup.py的install\u中添加“Bar”(因为easy\u安装在任何网站上都找不到)。我找不

在我的组织中,我们有两个内部开发的Python包。例如,让我们称它们为FooBar。两者都是在独立的Git存储库中开发的Foo是一个挂架应用程序,它使用栏中的某些库函数。两者都不是公开分发的

当我们部署Foo时,通常会从源代码管理导出最新版本,并在virtualenv中运行
setup.py develope
。这很好用

问题是,我们需要某种方式为部署Foo的每个环境分发Bar。显然,我们不能在setup.py的install\u中添加“Bar”(因为easy\u安装在任何网站上都找不到)。我找不到任何自动获取/安装私人开发的依赖项的方法


有没有更容易管理的方法?我觉得我错过了Python打包和分发的要点。

您可以创建一个包存储库。这些步骤基本上是:

  • 使用setup.py bdist\u egg创建一个egg
  • 将创建的egg从dist复制到Apache提供服务的目录中
  • 使用-f开关,将url添加到Apache公开的目录,并添加到easy\u install命令中
  • 请注意,Apache不一定是必需的,但它会自动生成一个目录列表,easy_install可以处理该列表


    如果您使用的是buildout,那么有一些配置选项可以执行与-f相同的操作,我非常确定您也可以在pip中使用这些选项。

    在我的工作中,我们使用setuptools创建特定于操作系统的包。我们碰巧使用了RedHat,所以我们调用bdist_rpm来创建rpm包。我们发现这比eggs更有效,因为我们可以在python和非python libs的包中进行依赖关系管理


    我们在持续集成计算机上创建RPM,并将其移动到一个YUM repo,在那里可以通过YUM更新或升级将其推出。

    使用setuptools时,可以在setup.py中指定HTTP、FTP和SVN位置,以便easy_install查找包:

    您可以在某个“秘密”位置发布Bar,或者,我还没有尝试过,但HTTP basic auth可能可以工作:

    setup(
        ...
        dependency_links = [
            "http://user:pass@example.com/private-repository/"
        ],
    )