簡體   English   中英

Python 從另一個調用時找不到模塊

[英]Python module not found when calling from another

我有這個項目結構:

/project_name
    main.py
    ----- __init__.py
    ------ /modules
    -------- __init__.py
    -------- module1.py
    -------- module2.py

我已經編輯以添加更多信息。 在工作並測試了很多解決問題的建議之后,沒有任何效果。

環境

  • Windows
  • Conda 虛擬環境項目 python 3.10
  • VS代碼

問題

從 VScode 運行 main.py 時

from modules.module1 import *

if __name__ == "__main__":
    pass

這個錯誤引發

from module1 import *
ModuleNotFoundError: No module named 'module2'

模塊

模塊1.py

from module2 import *

模塊2.py

def test():
    print("just testing")

所以當我從 main.py 導入一個導入另一個模塊的模塊時,問題總是會發生。 找不到從我從 main.py 導入的模塊導入的第二個模塊。

仍在尋找解決方案

  1. 您可以先嘗試設置 PythonPath。 如果你使用vscode開發,你可以在setting.json中設置這個PythonPath
  2. 如果 module1.py 和 module2.py 在同一個目錄下,你可以嘗試使用相對導入。 循環導入也請注意。
from .module1 import Module1
  1. main.py最好移到src目錄下。

從 project_name 文件夾運行文件

如果您從文件夾中運行文件,python 將能夠從該文件夾中查找本地模塊。 您需要在項目的根目錄下調用它。

user/projects/package_name$ python -m src/modules/module2.py

Pycharm 工作目錄

如果你使用Pycharm,你可以將運行配置工作目錄配置到你項目的根目錄下。

pycharm的配置面板

在可編輯模式下導入您的 package

使用以下內容在項目的根目錄中創建一個pyproject.toml文件:

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "package_name"
version = "0.0.1"
requires-python = ">=3.7"

您的 package 需要遵循以下結構:

project_name/
└── src/
    └── package_name/
        ├── __init__.py
        └── example.py

要從項目的根目錄將其安裝在您的環境中:

user/projects/package_name$ pip install -e .

這樣,您就不必擔心 PYTHONPATH、workind 目錄、相對/絕對導入。 您只需使用您創建的預期路徑導入和使用 package,Python 將知道如何查看pip install命令。

暫無
暫無

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

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