繁体   English   中英

使用 python 的 Visual Studio 代码中的“在没有已知父包的情况下尝试相对导入”错误

[英]“Attempted relative import with no known parent package” error in visual studio code with python

我正在尝试使用 Visual Studio 代码组装一个 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 文件,但到目前为止,这些都没有奏效。

您可以在导入之前将它们添加到代码的顶部

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__))))

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM