从命令行运行 python 要求我导入模块

Posted

技术标签:

【中文标题】从命令行运行 python 要求我导入模块【英文标题】:Running python from command line asks me to import modules 【发布时间】:2021-07-18 15:58:24 【问题描述】:

我有一个在 Linux 上用 Spyder(Python 3.8) 编写的脚本。在 Spyder 控制台上,脚本运行良好,而我从 Linux 终端调用它时,它似乎看不到我在脚本中导入的模块。打开我运行的终端:python3 /zhome/c9/f/144817/Desktop/ChargersDaniel.py 但是,这是我遇到的错误:

Traceback (most recent call last):  File "/zhome/c9/f/144817/Desktop/ChargersDaniel.py", line 9, in <module>
import GPyOpt ModuleNotFoundError: No module named 'GPyOpt'

GPyOpt 是我在脚本第一行中拥有的第一个库。 看起来由于某种原因,python3 没有看到安装的库。我已经检查了解决方案 here 但这不是我的情况,因为我已经在终端调用 Python3。

有什么建议吗? 提前致谢

【问题讨论】:

您的编辑器是否在虚拟环境中安装了您的模块? @Talon 我怎么能理解? 你的 Spider IDE 在底部栏中心可能有类似conda (Python 3.8) 的东西来指示你的环境。我强烈怀疑如果您在 Sypder 之外的新外壳中,您只需要再次激活正确的 conda 环境。 Spyder FAQ 有一堆与环境相关的条目。 docs.spyder-ide.org/current/faq.html @JonSG 实际上最有可能解决我的问题,但是,在我的终端上输入 conda --version 时,我得到一个“找不到命令”。我打开 spyder 的方式是使用这个命令 spyder-4.1.5-python-3.8.4-numpy-1.19.2-matplotlib-pandas 加载所有必需的依赖项,然后打开 Spyder IDE。 【参考方案1】:

也许在从终端运行时检查是否安装了 GPyOpt:

python3 -c "import GPyOpt"
if [ $? -eq 0 ]
then
  echo "GPyOpt is installed!"
fi  

【讨论】:

问题不在于这个特定的库,实际上我在脚本开头拥有的所有库都遇到了相同的错误。所以,我想为这两种情况(spyder、终端)检查sys.path,看看每个人都有哪个站点包路径,看起来它们看起来像是两个不同的目录。我实际上可以将包含所需库的目录添加到 PYTHONPATH 中吗? 是的,我会尝试将您的终端 $PATH 设置为在同一目录中查找,但如果这不起作用,您可能只需要在终端中安装所需的库(pip3 install --user )

以上是关于从命令行运行 python 要求我导入模块的主要内容,如果未能解决你的问题,请参考以下文章

用于命令行脚本和导入模块的 Python“模板”模块

在命令行中启动脚本时导入模块

导入错误:没有名为 arch 的模块

Python3/cloud9/lambda - 使导入的模块可用于 lambda

解决:python命令行运行出错 ImportError: No module named ...

在 Python 中,我可以调用导入模块的 main() 吗?