包导入在 Python Interactive window(在 VSCode)中有效,但在终端-运行 python 中无效?

Package import works in Python Interactive window (in VSCode) but not in terminal-run python?

我有一个自定义的 Python 包 (my_package) 位于目录 (super_dir) 中。我在 super_dir 的嵌套目录中有一个脚本 (my_script.py)(我们称之为 sub_dir),它导入 my_package 并使用它。

如果我通过调用 python sub_dir/my_script.py. 从终端 window(我的工作目录是 super_dir)运行 脚本,我会收到 ModuleNotFound 错误它 确实 工作,但是,如果 my_script.py 位于 super_dir 内,而不是 sub_dir 内,我只是调用 python my_script.py。如果我 运行 my_script.py in VSCode in Python Interactive window 也有效(即使我的工作目录是 sub_dir)只要我有线

import os
os.chdir('....further_paths/super_dir/') 

在脚本的顶部。

我的问题是:如何从终端 将脚本发送到 运行 ,以便它可以保留在 sub_dir 内,但仍然能够要导入 my_package,即使 my_package 位于 'up' 整个目录?

即使上面的行^(更改当前目录)包含在脚本的顶部,只要我 运行 来自航站楼 window 和 my_script.py 不在 super_dir.

提前谢谢你,我希望我的问题很清楚!

你有两个选择。一是您需要将 PYTHONPATH 设置为 super_dir,这样当 Python 执行您的脚本时,它会在导入期间查找包。

另一种选择是使 my_script 成为一个模块,然后使用 python -m sub_dir.my_script 来执行代码。