我有一个内部Python应用程序,它作为包的集合进行部署,我需要一种方法让开发人员快速将所有这些包作为可编辑源签出,这样整个应用程序就可以在原地编辑,所有包中的更改都可以轻松地推回到原始的git服务器。此外,应用程序需要由非开发人员作为传统包进行部署。
假设我有一个顶级包,它有一个setup.py
,看起来像这样:
# ...
setup(name="Foo",
# ...
url="https://mygitserver.com/Foo",
install_requires=[
"Bar>=0.0.1",
],
dependency_links=["git+https://mygitserver.com/Bar@0.0.1#egg=Bar-0.0.1",],
# ...
)
我可以使用以下命令将此包安装为可编辑:
pip3 install -e git+https://git@mygitserver.com/Foo#egg=Foo --process-dependency-links
这将创建一个目录src/foo
,并使用从git服务器签出的Foo
的源代码填充该目录。这很好。
依赖项Bar
也从git服务器中检索,但它未安装为可编辑。pip3 freeze
只是将其显示为一个名为Bar
的常规安装包,因此gitURL也会丢失。
有没有办法以某种方式进行干预,并让pip安装一些(不一定是所有(可编辑的依赖项?或者在这种情况下我需要使用requirements.txt
吗?如果我必须使用requirements.txt
,我如何确保这些依赖项在由非开发人员部署时正常安装?
我知道pip>10是为了取消dependency_links
,但目前我还是停留在pip9.0.2。我使用的是Python 3.5。我的目标是一个嵌入式平台,它很难改变这些,所以这些版本是我目前正在使用的。如果pip>=10可以在这个领域做一些新的事情来帮助我,那么我可以考虑升级,在这个系统上做这件事并不简单。
您可以先简单地使用pip install -e <Bar-URL>
,然后在安装Foo
时,pip会发现依赖项已经安装。两者都可以编辑。