【问题标题】:Package import works in Python Interactive window (in VSCode) but not in terminal-run python?包导入在 Python 交互窗口(在 VSCode 中)中有效,但在终端运行的 python 中无效?
【发布时间】:2020-04-08 13:41:17
【问题描述】:

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

如果我通过调用python sub_dir/my_script.py. 从终端窗口(我的工作目录是super_dir)运行脚本,我会收到ModuleNotFound 错误,但是,如果@987654330 它确实工作@ 位于super_dir 内,而不是在sub_dir 内,我只需调用python my_script.py。如果我在 Python 交互窗口中的 VSCode 中运行 my_script.py,它也可以工作(即使我的工作目录是 sub_dir)只要我有这些行

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

在脚本的顶部。

我的问题是:我怎样才能让脚本从终端运行,以便它可以保留在sub_dir 内,但仍然可以导入my_package,即使my_package位于“向上”整个目录?

即使上面的行^(更改当前目录)包含在脚本的顶部,只要我从终端窗口运行脚本并且my_script.py 不是,我仍然会收到ModuleNotFound 错误位于super_dir

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

【问题讨论】:

  • 所以你有super_dir/my_package.pysuper_dir/sub_dir/my_script.py的布局?
  • 没错——除了它真的是super_dir/my_package/init.pysuper_dir/my_package/my_functions.py,因为在总体my_package中有模块和.py文件

标签: python visual-studio-code terminal module importerror


【解决方案1】:

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

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

【讨论】:

  • 感谢您的澄清!非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-22
  • 2021-12-23
  • 2016-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多