如何在 python 中导入我的个人模块?

How can I import my personnal modules in python?

我的 python 项目模块有问题。 这是我的项目树:

Documents/Projects/projet/
├── code
│   ├── datas
│   │   ├── Lexique383
│   │   │   └── Lexique383.tsv
│   │   └── Lexique383.zip
│   ├── __init__.py
│   ├── __pycache__
│   │   └── __init__.cpython-38.pyc
│   ├── src
│   │   ├── Correcteur.py
│   │   ├── __init__.py
│   │   ├── PoCCode.py
│   │   └── __pycache__
│   │       ├── Correcteur.cpython-38.pyc
│   │       └── __init__.cpython-38.pyc
│   └── ui
│       ├── GUI.py
│       ├── GUI.ui
│       ├── __init__.py
│       ├── Loader.py
│       └── __pycache__
│           └── GUI.cpython-38.pyc

依赖关系如下:

我正在为这个项目使用 2 台计算机,一台 PyCharm,一台 VSCode。 问题是我使用了 PyCharm 到 运行 Loader.py 的配置,其中将内容根和源根添加到 PYTHONPATH。但是当我回到我的另一台电脑并想检查是否一切正常时,我遇到了这个错误:

Traceback (most recent call last):
  File "Documents/Projects/projet/code/ui/Loader.py", line 4, in <module>
    import GUI
  File "Documents/Projects/projet/code/ui/GUI.py", line 13, in <module>
    from code.src import Correcteur
ModuleNotFoundError: No module named 'code.src'; 'code' is not a package

所以我尝试将“code”、“src”和“ui”添加到我的系统路径中,但我仍然遇到错误。 毫无疑问,我做了一些不适用于 sys.path 的事情,但我不知道是什么。你能帮我解决这个问题吗?

编辑: 这就是我使用 pathlib 将目录添加到我的系统路径的方式。
Loader.py :

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication
import sys
from pathlib import Path
sys.path.extend([
    Path(__file__).parents[1].resolve(),
    Path(__file__).parents[1].resolve() / "src"
])
print(sys.path)
import GUI

这是我在 GUI.py 中导入 Correcteur 的方式:

from code.src import Correcteur

您添加到 sys.path 的方法应该有效。主要问题是您将 pathlib.Path 个对象添加到 sys.path,它只需要字符串。

如果您只是将要添加的 Path 对象转换为字符串,那么您的代码的简化版本应该可以工作:

在Loader.py

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication
import sys
from pathlib import Path
# Note the call to `str(...)` here
sys.path.insert(1, str(Path(__file__).parents[2].absolute()))
print(sys.path)
import GUI

此外,您收到的一些错误是因为 Python 有一个名为 code 的内置模块,它是错误导入的,所以我建议您更改您的包以使用不同的名字.