为什么我需要包含 sys.path.append 来导入带有 Python 3.6 的模块,而我的大学不需要?

Why do I need to include sys.path.append to import a module with Python 3.6 and my colleges doesn't need?

几个月来我一直面临着一种奇怪的情况。

我一直在做的几个代码中,在python3.6.9、Ubuntu18.04导入一个模块,如:

import src.Modules.ABC.DC as DC

我确实需要包括 sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', '..')) 但是我所有使用相同代码和虚拟环境工作的大学都不需要那条线。

如果有帮助,在终端中,如果我不包含该行 returns:

ModuleNotFoundError: No module named 'src'

因此,我的问题是:

1-为什么我需要包含该行,而在我不需要的另一台计算机上?

2-您是否建议始终包含该行以获得更可靠的代码?

文件夹结构如下:

Myproject/src/Modules/ABC/DE

Myproject/tests/Modules/ABC/test_DE

我在 Myproject、src、tests 等处创建了一个虚拟环境。而且它 returns 总是一样的。 当我 运行 没有 venv 时它也 returns 同样的问题。我使用的 python 命令是

python3 tests/Modules/ABC/test_DE.py

这很烦人,因为我总是需要删除该行才能请求合并。

只需将 PYTHONPATH 环境变量设置为(完整路径)Myproject。这告诉 Python 在哪里可以找到要导入的模块,并且无论您 运行 脚本来自哪个目录,它都可以正常工作。这避免了修改 sys.path.

的需要