(Python)相对/绝对导入在 Visual Studio 代码中无法识别,但在 PyCharm 中可以识别

问题描述 投票:0回答:1

我对 python 比较陌生,我于 2023 年 10 月开始学习该语言,并使用 VS Code 作为我的 IDE。

在我的测试自动机项目中,我将所有类放入一个文件夹中(用于错误处理、网络驱动程序的安装和拆卸等的类),我意识到一旦文件达到 2000 行并且仍在增长,我应该正确地构建我的文件.

尝试从另一个目录导入时,我会在控制台收到以下错误。

from ReskinRefactor.handlers import driver_handler
ModuleNotFoundError: No module named 'ReskinRefactor'

大约两周前,我转而使用 PyCharm,因为 python 是我使用的主要语言,并且执行完全相同的操作可以完全正常地运行文件并导入所有模块,我的文件结构如下:

├───ReskinRefactor
    │   utils.py
    │   __init__.py
    ├───handlers
    │   │   driver_handler.py
    │   │   error_handler.py
    │   │   log_handler.py
    │   │   test_handler.py
    │   └───__init__.py
    |
    ├───make_things
    │   │   create.py
    │   │   delete.py
    │   └───edit.py
    │
    └───test_files
        │
        └───Accounts
            │   playeground.py   
            └───__init__.py

我已经在两个 IDE 上尝试了相对导入和绝对导入,但我很困惑为什么 PyCharm 处理此代码而 VS Code 不处理。

我宁愿知道我有糟糕的代码,也不愿接受一个 IDE 可以让我的糟糕代码工作。

python visual-studio-code import pycharm
1个回答
0
投票

这是因为 VS Code 没有在项目根目录创建 __init__.py 文件,而 PyCharm 却创建了。

如果你想从 file.py 导入函数/类/等,必须有一个 __init__.py 文件。

例如,如果你的根目录是Lib,并且它有一个main.py和src目录以及myfile.py(带有函数f),那么你必须在Lib目录和src目录中添加__init__.py。然后,在 main.py 中您可以输入:

from Lib.src.myfile import f
© www.soinside.com 2019 - 2024. All rights reserved.