簡體   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