【问题标题】:Why can't I import a python file from the same folder into a project?为什么我不能将同一文件夹中的 python 文件导入项目中?
【发布时间】:2021-02-20 01:48:28
【问题描述】:

为什么我不能导入与我要导入的代码位于同一文件夹中的文件?我在 Visual Studio Code 中工作。

这是我的代码:

import requests
import json
import webbrowser
import credentials
from pprint import pprint

r = requests.get("https://api.thecatapi.com/v1/favourites",
                 headers=credentials.headers)

try:
    content = r.json
except json.decoder.JSONDecodeError:
    print("Wrong format")
else:
    pprint(content)

这是标签弹出的问题。

Import "credentials" could not be resolved

这是导入文件的内容。

headers = {"x_api_key": "xxxxxxxxxxxxxxxxxx"}

【问题讨论】:

  • 你能发布 fullexact 错误信息吗?它通常有更多信息,比如哪一行引发了错误。因为这看起来不像来自 Python 的标准导入错误。而“标签弹出”中的“tab”又是什么?
  • 试试import .credentials。在 Python 3 中,默认情况下导入是绝对的,您需要添加 '.'使它们相对(在这种情况下,相对于当前目录)。 - 我希望您使用某种语法检查器,可能是因为 VSC 已经设置了它。我相信,该错误来自检查器,而不是 Python 解释器。
  • 你有__init__.py 文件吗?
  • 以上所有答案都得感悟。当两个文件在同一个文件夹中时,它们可以毫无问题地导入。这里的问题是文件名。

标签: python visual-studio-code importerror


【解决方案1】:

我猜是这个

这是标签弹出的问题。

Import "credentials" could not be resolved

不是来自 Python 解释器的错误,因为它看起来不像标准的“ModuleNotFoundError: No module named 'XXX'”,这是您在 运行你的 Python 代码,你的导入错误或配置错误。

既然你提到了 Visual Studio Code 和一个“tab”,那么我猜这是来自 integrated linter 并且它在 Problems 选项卡中显示了该错误:

如果credentials 确实与该文件在同一目录 中,并且您正在同一目录 下运行代码,那么

import credentials

应该没问题。问题仅在于 linter,它不知道在哪里寻找 credentials。根据您启用的 linter(请参阅文档的 Linting Python in Visual Studio Code 部分),您必须明确告诉 linter 在哪里可以找到 credentials

例如,假设您有一个文件夹 app,其中包含 credentials 和此脚本:

app
├── ...(other files)...
├── credentials.py
└── script.py

在您的工作区中添加/更新 .vscode/settings.json 文件(请参阅 VS Code 文档的 General linting settings 部分)。我正在使用Pylance,所以我需要添加一个python.analysis.extraPaths 列表条目,如下所示:

"python.analysis.extraPaths":[
    "/absolute/path/to/app"
]

基本上告诉我的 linter “检查导入时,还要检查这个 app 文件夹”。这会清除“问题”选项卡中的“无法解决”。

【讨论】:

    猜你喜欢
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多