python包:如何依赖单独包的最新版本

时间:2012-01-16 01:43:28

标签: python packaging setuptools pip distribute

我正在开发一个测试django站点的编码,我将其保存在bitbucket存储库中,以便能够在远程服务器上轻松部署它,并可能与朋友共享开发。我使用hg进行版本控制。

该网站依赖于第三方应用程序(django-registration),我需要为我的网站自定义,所以我分叉了原始应用程序并为它创建了第二个存储库(这个想法是这样我可以跟上有了原版的更新,如果我只是将代码粘贴到我的主网站,再添加到我自己的自定义代码,这是不可能的)(你可以看到关于这个question的更多细节)

我的问题是,如何在我的setup.py文件中指定要求,这样当我安装我的django网站时,我会获得第三方应用程序的最新版本的fork(我使用分发而不是setuptools以防万一差异)?

我试过这个:

install_requires = ['django', 'django-registration'],
dependency_links = ['https://myuser@bitbucket.org/myuser/django-registration#egg=django_registration']

但这会让我获得原始主干上的最新命名版本(所以甚至不是最新版本)

使用pip需求文件但效果很好:

hg+https://myuser@bitbucket.org/myuser/django-registration#egg=django-registration

从我的fork获取最新版本。

有没有办法直接从setup.py文件中获取相同的行为,而不必首先安装该站点的代码,然后运行pip install -r requirements.txt?

这个question非常有用,但似乎建议我应该依赖版本'dev'或第三方软件包,这不起作用(我想必须有一个标记为dev的特定版本为此)

此外,我是包装/分发/安装工具的完全新手,所以不要紧接着拼出步骤:)

也许我应该更改第三方应用程序分支上的setup.py文件,并确保它提到了版本号。通常我很想知道什么是源代码分发,而不是简单地将我的代码放在公共存储库中,以及在我的情况下什么是二进制分发(一个egg文件?),以及这是否更实用我远程部署/让我的朋友在他的电脑上部署。并且还想知道如何在我的存储库中标记一个版本以便setup.py引用它,它只是一个版本控制标记(在我的情况下是hg)?您可以随意评论您认为对初学者打包者很重要的任何细节:)

谢谢!

1 个答案:

答案 0 :(得分:0)

把这个:

dependency_links=['https://bitbucket.org/abraneo/django-registration/get/tip.tar.gz#egg=django-registration']

在dependency_links中,你必须传递一个像这样的下载URL。

“abraneo”也是一个分叉这个项目的人,用你的名字取代他的名字。