提示:将依赖项安装为可编辑

时间:2018-08-02 22:06:18

标签: python git deployment pip package

我有一个内部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",],
      # ...
  )

我可以使用以下命令以 editable 的形式安装此软件包:

pip3 install -e git+https://git@mygitserver.com/Foo#egg=Foo --process-dependency-links

这将创建一个目录src/foo,并使用从git服务器中签出的 Foo 的源代码填充目录。很好。

依赖项Bar也可以从git服务器中检索,但是它没有以可编辑的方式安装pip3 freeze只是将其显示为名为Bar的常规安装软件包,因此git URL也将丢失。

是否有办法以某种方式进行干预并使pip将某些(不一定是全部)依赖项安装为可编辑的?还是在这种情况下需要使用requirements.txt?如果必须使用requirements.txt,当由非开发人员部署时,如何确保这些依赖项可以正常安装?

我知道pip> 10是要废除dependency_links的,但是目前我仍然停留在pip 9.0.2。我正在使用Python 3.5。我的目标是一个很难更改它们的嵌入式平台,因此这些版本是我目前正在使用的版本。如果pip> = 10可以在这方面做一些新的事情来帮助我,那么我可以考虑进行升级,在这个系统上这样做并不容易。

1 个答案:

答案 0 :(得分:0)

您可以简单地在public Flowable<List<Patient>> getPatientFromApi(){ String token = preferences.getValue(SDConstants.token); return apiNetwork.getPatients(token).map(new Function<ResponsePatient, List<Patient>>() { @Override public List<Patient> apply(ResponsePatient responsePatient) throws Exception { return PatientMapper.transform(responsePatient); } }); } public Flowable<List<Patient>> listPatient(){ return appDataBase.patientDao().listPatient() .switchIfEmpty(getPatientFromApi()) .doOnNext(s -> appDataBase.patientDao().saveAll(s)); } 之前安装,并​​且在安装pip install -e <Bar-URL>时,pip会认为依赖项已经安装。两者都是可编辑的。