我对 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 可以让我的糟糕代码工作。
这是因为 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