【问题标题】:How should I handle having a local dependency shared by two projects?我应该如何处理两个项目共享的本地依赖项?
【发布时间】:2021-08-24 20:29:44
【问题描述】:

这是理论上的场景:

Project_A 和 Project_B 是客户端的两个独立进程。这两个项目都依赖于一个名为 Module_X 的自定义模块。

我目前有以下文件夹结构:

project_a
project_a/module_x

project_b
project_b/module_x

这在功能上有效,但缺点是如果我在 project_b/module_x 中进行更改,我必须手动将 module_x 的更新内容复制到 project_a/module_x 以便它们一致并且我在两个项目之间获得一致的结果.

有什么更好的方法可以解决这个问题?

module_x 无法放在 pypi 上,因为它包含敏感信息资源的逻辑。

【问题讨论】:

  • 这个问题可能过于基于意见而无法有意义地回答,因为它在很大程度上取决于您的实施需求。然而,一个强烈的建议是将其添加到已经检查导入的路径中。见Where should I put my own python module so that it can be imported
  • 您应该根据要求在每个项目中安装本地依赖项。如果您想对 module_x 进行更改,这将影响其安装后的行为,您可以使用 pip 可编辑安装
  • @G.Anderson 好的,我想我明白了。我从项目目录中删除了 module_x,而是运行指向包含 module_x 的本地目录的 pip install 如果我理解理论,这意味着如果我更改 module_x 那么两个项目都会有更新,因为它们通过 pip 引用包含 module_x 的同一个本地目录.我捡起你放下的东西了吗?
  • 您可以添加一个路径配置文件,其名称格式为name.pth,如site 模块的文档中所述。
  • @Dapper 如果您希望能够编辑代码并对其产生影响,您需要将 -e 选项添加到 pip install -e /path/to/module 并且您必须进行最小的打包设置跨度>

标签: python


【解决方案1】:

这会将路径添加到 python 搜索模块的路径

import sys
sys.path.insert(1, '/home/user/projectb')

【讨论】:

  • 这是一个应该避免的黑客攻击
  • @juanpa.arrivillaga 如果可以的话,请提出您更好的解决方案,先生。
  • 好吧,对于初学者来说,你总是可以使用 PYTHONPATH 环境变量,但更好的是,你通常想要pip install 模块。不要随意修改sys.path。如果您尝试编写动态插件系统之类的东西,而不是静态依赖项,这可能是合理的
  • @juanpa.arrivillaga 他说他不会投入点子
  • 什么?那没有意义。 OP说它不能放在pypi中,但不是必须的。 pypi 不是 pip 的同义词
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-18
  • 1970-01-01
  • 2015-12-12
  • 1970-01-01
  • 2019-07-23
  • 2011-11-27
相关资源
最近更新 更多