如何解决使用python的Visual Studio代码中的“在没有已知父包的情况下尝试相对导入”错误
我正在尝试使用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__))))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。