为什么我需要包含 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
.
的需要
几个月来我一直面临着一种奇怪的情况。
我一直在做的几个代码中,在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
.