"Attempted relative import with no known parent package" visual studio 代码中的错误 python
"Attempted relative import with no known parent package" error in visual studio code with python
我正在尝试使用 visual studio 代码 assemble 一个 python 项目,我想在文件之间导入函数和 类。我的文件夹结构如下:
chessboards
|-> __pycache__
|-> .vscode
|-> boards
|-> __init__.py
|-> queens.py
|-> knights.py
|-> __init__.py
|-> board.py
我在“boards.py”文件中有一个名为 my_func 的函数。在外部目录的 init.py 文件中,如果我输入:
from .board import my_func
我得到标题中的错误。我也试过:
from chessboards.board import my_func
在这种情况下,它告诉我没有名为“chessboards”的模块,我不明白,因为那里有一个 init.py 文件。
我已将 vscode 中的导入设置从自动更改为相对,但似乎都不起作用。如果有人可以帮助我,我将非常感激。其他问题的大部分答案都说要更改 PYTHONPATH 或 .env 文件,但 none 目前为止这些都有效。
您可以在导入前将它们添加到代码的顶部
import sys
from pathlib import Path
sys.path[0] = str(Path(sys.path[0]).parent)
from board import my_func
或者您可以添加一个 .env
文件:
PYTHONPATH=.:${PYTHONPATH}
当我们使用相对路径查找文件时,VSCode会根据当前文件的文件夹位置查找导入的文件
为了描述方便,如果我们将文件“board.py”的“my_func”导入文件“queens.py”,那么VSCode就不能找到“board.py,因为它不在文件夹“boards”中。
因此,我们需要添加这个路径来帮助它找到它。
您也可以使用下面的语句将文件路径导入到要查找的系统路径中
import os,sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
我正在尝试使用 visual studio 代码 assemble 一个 python 项目,我想在文件之间导入函数和 类。我的文件夹结构如下:
chessboards
|-> __pycache__
|-> .vscode
|-> boards
|-> __init__.py
|-> queens.py
|-> knights.py
|-> __init__.py
|-> board.py
我在“boards.py”文件中有一个名为 my_func 的函数。在外部目录的 init.py 文件中,如果我输入:
from .board import my_func
我得到标题中的错误。我也试过:
from chessboards.board import my_func
在这种情况下,它告诉我没有名为“chessboards”的模块,我不明白,因为那里有一个 init.py 文件。
我已将 vscode 中的导入设置从自动更改为相对,但似乎都不起作用。如果有人可以帮助我,我将非常感激。其他问题的大部分答案都说要更改 PYTHONPATH 或 .env 文件,但 none 目前为止这些都有效。
您可以在导入前将它们添加到代码的顶部
import sys
from pathlib import Path
sys.path[0] = str(Path(sys.path[0]).parent)
from board import my_func
或者您可以添加一个 .env
文件:
PYTHONPATH=.:${PYTHONPATH}
当我们使用相对路径查找文件时,VSCode会根据当前文件的文件夹位置查找导入的文件
为了描述方便,如果我们将文件“board.py”的“my_func”导入文件“queens.py”,那么VSCode就不能找到“board.py,因为它不在文件夹“boards”中。
因此,我们需要添加这个路径来帮助它找到它。
您也可以使用下面的语句将文件路径导入到要查找的系统路径中
import os,sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))