包导入在 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
来执行代码。
我有一个自定义的 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
来执行代码。