簡體   English   中英

導入正確的模塊,但在python中出現錯誤

[英]importing the right module but getting an error in python

import sys
from subprocess import run, PIPE
import shlex
from src.detector_main import detect_main

def main():
    # print command line arguments
    for arg in sys.argv[1:]:
        print(arg)

if __name__ == "__main__":
    # main()
    print(sys.argv)

這是我的主要模塊。 如果您from src.detector_main import detect_main ,則應該從src/detector_main.py導入detect_main

在我的detector_main.py ,我有一堆進口商品,

import ast
import os
import fpdf
import sys
from Detector.class_coupling_detector import detect_class_cohesion
from Detector.cyclomatic_complexity_detector import detect_cyclomatic_complexity
from Detector.long_lambda_detector import detect_long_lambda
from Detector.long_list_comp_detector import detect_long_list_comp
from Detector.pylint_output_detector import detect_pylint_output
from Detector.shotgun_surgery_detector import detect_shotgun_surgery
from Detector.useless_exception_detector import detect_useless_exception
# from tools.viz_generator import add_viz

def detect_main(directory):
    # Get stats for files in directory
    stats_dict = get_stats(directory)
    ....

運行我的主模塊會給我這個錯誤:

File "pyscent.py", line 5, in <module>
    from src.detector_main import detect_main
  File "C:\Users\user\Desktop\proj\src\detector_main.py", line 5, in <module>
    from Detector.class_coupling_detector import detect_class_cohesion
ModuleNotFoundError: No module named 'Detector'

我沒有得到這個,因為我正在遵循確切的路徑。

在此處輸入圖片說明

我不明白這一點,因為我遵循正確的道路。

在您的例子導入Detector.class_coupling_detector文件模塊,該模塊在同一個目錄探測器 ,但你的CWD 是不是 src目錄。

因此,您應該from src.Detector...使用絕對導入from src.Detector...或者from src.Detector...相對導入from .Detector...

以下是有關這兩種導入方式之間差異的信息

暫無
暫無

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

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