(Python)相对/绝对导入在Visual Studio Code中不被识别,但在PyCharm中被识别

0 投票
2 回答
43 浏览
提问于 2025-04-14 16:17

我对Python还比较陌生,2023年10月开始学习这个语言,使用VS Code作为我的开发工具。

在我的测试自动化项目中,我把所有的类都放在一个文件夹里(包括错误处理、设置和关闭网页驱动等),当代码行数达到2000行并且还在增加时,我意识到应该好好整理一下我的文件结构。

当我尝试从其他目录导入时,控制台会出现以下错误。

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

大约两周前,我开始使用PyCharm,因为Python是我主要使用的语言,而在PyCharm中做同样的事情,文件和模块都能正常运行,我的文件结构如下:

├───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

我在这两个开发工具中都尝试过相对导入和绝对导入,但我搞不懂为什么PyCharm能处理这些代码,而VS Code却不行。

我宁愿知道自己写的代码有问题,也不想接受因为一个开发工具让我的坏代码能运行。

2 个回答

0

这是因为VS Code没有在你项目的根目录下创建__init__.py文件,而PyCharm会自动创建这个文件。

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

举个例子,如果你的根目录是Lib,里面有一个main.py文件和一个名为src的文件夹,src文件夹里有myfile.py(里面有一个函数f),那么你需要在Lib目录和src目录下都添加__init__.py文件。这样,在main.py中你就可以写:

from Lib.src.myfile import f
0

你可以打开设置,然后搜索“在文件目录中执行”。取消选中这个选项可能会有效。

当你取消选中这个选项后,终端会把当前打开的工作区当作根目录来运行文件,而不是文件所在的文件夹。

在这里输入图片描述

撰写回答