【问题标题】:python pip - development mode with local dependenciespython pip - 具有本地依赖项的开发模式
【发布时间】:2018-11-30 03:42:36
【问题描述】:

背景

我有两个 python 项目。项目 A 和项目 B。

每个项目都有自己的虚拟环境和自己的 setup.py。

这两个项目都不是纯 py 文件,并且具有“构建”过程,例如构建扩展、生成源代码等。

A 依赖于 B(setup.py install_requires 点在 B 上)。

每个项目都是作为 pypi 本地存储库的轮子构建和发布/分发的。

项目A的pip install w/wo -e(开发模式),很好地将项目B安装到项目A的venv站点包中。

到目前为止,一切都运行良好并且“按部就班”。

现在,我的故事变得复杂了……

我想一起开发这两个项目,而不必发布 B 以便 A 使用它。

例如,我想:

  1. 在 B 中更改一些内容。
  2. 构建 B(setup.py 构建)。
  3. 将 B 作为轮子发布到 pypi。
  4. 目标 - 项目 A 将“知道”修改后的项目 B。无需手动调整 sys.path。

其实我是想让项目A的pip install -e也能在开发模式下安装项目B。

经过一番阅读,我理解(希望是正确的)可以通过 --find-links 标志将“分发”定义为 本地源文件夹

我在 --find-links 中定义了项目 B 的根文件夹。

我试过了(在项目 A setup.py 文件夹上):

  1. 点安装。 -e --find-links = file:///path/to/B

  2. 点安装。 -e --find-links = git+file://path/to/B

两者都不起作用。

顺便说一句,在通往B轮或B蛋的路径中,

ex: pip install . -e --find-links = file:///path/to/B.whl

确实有效,但这不是我想要的。

希望你还和我在一起 :-)(对不起这个乏味的故事)

我错过了什么?

发送

【问题讨论】:

  • this question 可能会帮助您...尝试this pip install git+https://github.com/user/project.git@version 或者,如果速度较慢,try installing from zip 您还可以为开发和生产依赖项使用不同的文件,递归安装它们
  • --find-links 使pip 可以查看带有 tars/eggs/wheels 的目录或带有可下载形式的包链接的 HTML 文件。您不能只将其指向本地项目。
  • Leoschet - 这不能回答我的用例。我的依赖是本地文件夹,而不是远程或 zip。
  • @Phd - 所以没有其他方法可以解决它,只能编写“out of pip”脚本来 pip -e 依赖项或将 b 添加到 sys.path?
  • @hoefling - 谢谢。我希望有办法。顺便说一句,我根本没有设法声明对本地源文件的依赖。我试图将 find-links 指向源 setup.py 文件夹,它只是抱怨在那里找不到分发。我在网上看到的所有例子都是git+http。你知道一个可以做到这一点的工作示例吗?

标签: python python-3.x pip setuptools python-wheel


【解决方案1】:

让我试着重申一下这个问题:

  • 您使用两个 python ,包 A 和包 B。A 依赖于 B。
  • 您已选择在不同的虚拟环境中开发这两个包。
  • 您想对包 B 进行一些本地更改,并让包 A 使用包 B 的修改版本。

如果我在这里遗漏了一些东西,我深表歉意,但是为什么不简单地将这两个软件包安装在 相同 虚拟环境中,这将使这个问题消失?

即创建环境后,以可编辑模式安装包 B,然后安装包 A。B 中的任何更改都将由 A 获取,无需更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 2015-02-28
    • 1970-01-01
    • 2018-03-04
    相关资源
    最近更新 更多