(Python)相对/绝对导入在Visual Studio Code中不被识别,但在PyCharm中被识别
我对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