繁体   English   中英

为什么我需要包含 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?

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

在我一直在工作的几个代码中,在python 3.6.9、Ubuntu 18.04中导入一个模块,例如:

import src.Modules.ABC.DC as DC

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

如果有帮助,在终端中,如果我不包含该行,它将返回:

ModuleNotFoundError: No module named 'src'

因此,我的问题是:

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

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

文件夹结构类似于:

Myproject/src/Modules/ABC/DE

Myproject/tests/Modules/ABC/test_DE

我在 Myproject、src、tests 等创建了一个虚拟环境。 它返回始终相同。 当我在没有 venv 的情况下运行时,它也会返回同样的问题。 我使用的python命令是

python3 tests/Modules/ABC/test_DE.py

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM