Pylons应用程序部署与私人开发的依赖性

2024-06-24 13:44:34 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的组织中,我们有几个内部开发的Python包。为了举例,我们将它们称为FooBar。两者都是在单独的Git存储库中开发的。Foo是一个Pylons应用程序,它使用Bar中的某些库函数。两者都没有公开发行。在

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

问题是,我们需要某种方法为我们部署Foo的每个环境分配Bar。我们显然不能把“酒吧”放进去设置.py的install_需要(因为easy_install在任何网站上都找不到)。我找不到任何自动获取/安装私人开发的依赖项的方法。在

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


Tags: install方法pygit版本应用程序virtualenv源代码
3条回答

在中使用setuptools时设置.pySVU可以指定安装HTTP包的位置:

http://peak.telecommunity.com/DevCenter/setuptools#dependencies-that-aren-t-in-pypi

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

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

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

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

您可以创建包存储库。基本步骤如下:

  1. 设置.pyb清单鸡蛋
  2. 将创建的egg从dist复制到Apache提供的目录中
  3. 使用-f开关将url添加到Apache公开的easy\u install命令中

请注意,Apache不一定是必需的,但是它会自动生成一个目录列表,easy_install可以处理这个列表。在

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

相关问题 更多 >