Python setup.py - 强制更新依赖项(使用dependency_link)
假设我有一个叫做 myproject
的 Python 项目,它依赖于 mydependency
。这两个项目都是我自己维护的。
我该如何为 myproject
创建一个 setup.py 文件,以便它总是尝试安装 mydependency
的新版本,不管之前安装的是哪个版本?
假设我已经为这个项目写了一个 setup.py,内容是:
setup(
...
install_requires=['mydependency'],
dependency_links = ['url_to_mydependecy_repo@develop#egg=mydependency'],
....
)
问题是,当第二次运行安装时,mydependency
已经被安装了,所以安装程序不会去获取代码库,也不会尝试安装更新的版本。因为 mydependency
还在积极开发中(也是我在做),我需要确保 myproject
的安装总是能获取到依赖的链接。
我尝试过在依赖链接中使用 #egg=mydependency-dev
,并在 install_requires
中写 'mydependency==dev'
,同时在 mydependency
的 setup.py 中设置 version='dev'
,但在第二次安装时,'dev' 已经存在了,所以它不会再被获取。
使用 myproject
的 requirements.txt 文件,内容和 dependency_links
一样,结果也是一样的。在后续的安装中,需求已经满足了,所以不会再被获取。
注意:使用 pip -r requirements.txt --upgrade
可以实现我想要的效果,但我并不是手动安装,而是通过 Openshift 来安装,所以我不能真的加上 --upgrade
。
1 个回答
尝试将myproject
的依赖项链接到mydependency
的开发版本,就像你之前尝试过的那样,但要在你的mydependency
代码库中使用一个“有效的”版本(可以参考semver)。也就是说,不要将版本设置为dev
。这样会导致重新下载和重新安装依赖项(在我的情况下,这样做是有效的):
setup(
...
install_requires=['mydependency == dev'],
dependency_links = ['url_to_mydependecy_repo@develop#egg=mydependency-dev'],
....
)