在python项目中设置GIT子模块的路径



我有两个项目A和B。B是一个git子模块,在一个名为a的run.py的脚本中被调用。当我运行它时,失败告诉我它找不到B的一些内部模块(错误1(。为了解决这个问题,我在A的run.py上添加了以下内容:

import sys
sys.path.append("pathToProjectB")

它是有效的。然而,有人知道另一种方法吗?也许是一些更好的项目结构(B必须是a的GIT子模块,不能更改(或虚拟环境文件夹中的一些配置?这是让GIT子模块在python项目中工作的唯一方法吗?

更新1:此外,如果我在B中有一些文件与a中的文件同名,那么python可以获得a的文件,而我希望它获得B的文件(错误2(。

更新2:确实有一种方法可以纠正错误1而不必输入:

import sys
sys.path.append("pathToProjectB")

在项目A的run.py顶部。您可以将项目B作为包安装在A中,而不仅仅是将其作为A:pip install-e项目结构中的git子模块/ProjectB,但您必须首先在ProjectB中创建一个setup.py文件(如果setup.py使用它,则创建一个自述文件(。更多信息请点击此处https://shunsvineyard.info/2019/12/23/using-git-submodule-and-develop-mode-to-manage-python-projects/

我仍然有ERROR2的问题…所以A和B有一个名为data的文件,其中包含一些类数据。B调用自己的数据类。然而,当我从A调用B时,B从A调用数据类,而不是它自己的。。。我该怎么解决这个问题?

这是漫长的一天。。。

为了修复ERROR2,我更改了项目B的结构,如下简化的目录树所示。

从初始结构来看:

B 
__init__.py
setup.py
run.py
data
__init__.py
Data.py

更改为:

ProjectB
run.py
setup.py
B
__init__.py
data
__init__
Data

进一步的步骤

  1. 我用git子模块更新了A中的B——远程B
  2. 摆脱了A
  3. 重新设置
  4. 将B作为包安装

瞧,它成功了!

现在,当从A调用B时,B调用自己的Data类。我修改了B中的导入,以反映我所做项目的更改。然后Pylance抱怨(要求改变(,所以我很快就解决了。

最新更新