簡體   English   中英

ModuleNotFoundError: 沒有名為“src”的模塊。 從沒有 sys.path 的另一個目錄導入模塊並從現有目錄執行它們

[英]ModuleNotFoundError: No module named 'src'. Import modules from another directory without sys.path and execute them from existing directory

盡管這是一個常見的問題,但我相信我有一個奇怪的情況

MAIN
| --src
     | -- data 
            | -- __init__.py
            | -- operation.py
| tests
          | __init__.py
          | test_file.py
| examples
          | __init__.py
          | example.py

test_file.py 和 example.py 的內容如下:

from src.data.operation import *

我通過在測試文件夾中導航從 powershell 執行以下命令:

python -m pytest -v test_file.py

測試文件運行良好,沒有出現任何錯誤。

現在我通過在示例文件夾中導航從 powershell 執行以下命令:

python -m example.py

這給我帶來了模塊錯誤。 盡管測試和示例與 src 處於同一層次結構中,但僅當我通過在示例文件夾中導航來執行 example.py 文件時,我才會收到模塊錯誤。 如果有人能解釋這背后的邏輯,以及在不涉及 sys.path 的 Windows 系統中執行 example.py 的最佳方法是什么,那就太好了?

不附加 sys.path 就無法導入。 默認情況下,Python 在 $PYTHONPATH 中查找其模塊和包。 當您在模塊中導入某些內容時,它首先搜索具有該名稱的內置模塊,然后在變量 sys.path 給出的目錄列表中搜索文件或文件夾。

要成功從 src 導入,請在 example.py 的頂部添加這些行

import sys
sys.path.insert(0, "PATH_TO_THE_MAIN_FOLDER")

從示例文件夾中運行模塊:

python -m example   

暫無
暫無

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

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