簡體   English   中英

在 python 項目中為 GIT 子模塊設置路徑?

[英]Setting path for GIT submodule within a python project?

我有兩個項目 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 頂部。您可以通過在 A 中將項目 B 安裝為 package 而不僅僅是將其作為 git 子模塊安裝在 A 的項目結構中:Z62AD1C2A46C5298F03E2C95D3BBA8首先是項目 B 中的 setup.py 文件(如果 setup.py 使用它,還有自述文件)。 更多信息在這里https://shunsvineyard.info/2019/12/23/using-git-submodule-and-develop-mode-to-manage-python-projects/

我仍然遇到 ERROR2 的問題...所以 A 和 B 有一個名為 data 的文件,其中包含一些 class 數據。 B調用自己的數據class。 但是,當我從 A 調用 B 時,B 從 A 調用數據 class 而不是它自己的......我該如何解決這個問題?

這是漫長的一天...


為了修復 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 submodule update --remote B 更新了 A 中的 B
  2. 擺脫了 A 的 virtualenv
  3. 重新設置
  4. 安裝 B 作為 package

瞧,它奏效了!

現在,當從 A 調用 B 時,B 調用它自己的 Data class。 我重新設計了 B 中的導入以反映我所做的項目的更改。 然后 Pylance 抱怨(要求改變),所以我只是快速修復它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM