在我的组织中,我们有几个内部开发的Python包。例如,我们称之为 Foo 和 Bar 。两者都是在单独的Git存储库中开发的。 Foo 是一个Pylons应用程序,它使用 Bar 中的某些库函数。两者都没有公开发布。
当我们部署 Foo 时,我们通常会从源代码管理中导出最新版本,并在virtualenv中运行setup.py develop
。这没关系。
问题是我们需要某种方式为我们部署 Foo 的每个环境分发 Bar 。我们显然不能在setup.py的install_requires中放置'Bar'(因为easy_install无法在任何网站上找到它)。我找不到任何方法来自动获取/安装私人开发的依赖项。
管理这个更容易吗?我觉得我错过了Python打包和分发的重点。
答案 0 :(得分:2)
您可以创建包存储库。步骤基本上是:
请注意,Apache不一定是必需的,但它会自动生成easy_install可以处理的目录列表。
如果你正在使用buildout,有一些配置选项可以和-f做同样的事情,我很确定你也可以在pip中使用它。
答案 1 :(得分:1)
使用setuptools时,在setup.py中,您可以指定easy_install应查找包的HTTP,FTP和SVN位置:
http://peak.telecommunity.com/DevCenter/setuptools#dependencies-that-aren-t-in-pypi
您可以在某个“秘密”位置发布Bar,或者,我没有尝试过,但也许HTTP基本身份验证工作:
setup(
...
dependency_links = [
"http://user:pass@example.com/private-repository/"
],
)
答案 2 :(得分:0)
在我的工作中,我们使用setuptools来创建特定于操作系统的包。我们碰巧使用RedHat,因此我们调用bdist_rpm来创建rpm包。我们发现它比egg更好,因为我们可以在python和非python库的包中进行依赖管理。
我们在持续集成机器上创建rpms并将它们移动到YUM repo,可以通过YUM更新或升级将它们推出。