【问题标题】:A python module is found normaly when the python script runs from terminal but its not found when the same script is called in a bash script.Why?当 python 脚本从终端运行时通常会找到 python 模块,但在 bash 脚本中调用相同的脚本时找不到它。为什么?
【发布时间】:2018-07-08 14:03:35
【问题描述】:

(newbee 在这里,我找不到类似的东西)所以,我有一个 python 脚本,它可以向某些收件人发送一封带有附件的电子邮件,并且当我直接从终端运行它时工作正常。但是当我在 bash 脚本中调用这个脚本时,我得到一个错误,即找不到下面的模块。这是为什么? (如果重要,在 Mac 上)

ModuleNotFoundError: No module named 'email.MIMEMultipart'

【问题讨论】:

  • 打开终端,cd进入你的代码所在目录,然后尝试运行
  • 您将不得不提供更多详细信息。你的 bash 脚本到底是如何运行你的 python 脚本的?您的机器上有多个解释器吗?
  • 我的 Mac 上有 python 2.7 和 python 3.6,但是这个脚本以 #!/usr/bin/python 开头,实际上是 python 2.7(如果有帮助的话)
  • 请显示您的 bash 脚本,或者至少显示它调用 python 的位置。

标签: python bash python-module


【解决方案1】:

所以在我的 Mac 上我有两个版本的 python:

Python 3.6 存在于:

/Users/name/anaconda/bin/python

虽然 Python 2.7 存在于:

/usr/bin/python

我的 python_script.py 在终端中单独调用时运行良好,正在调用 Python 2.7 并具有以下 shebang/firstline:

#!/usr/bin/python

在我的 bash 脚本中,调用 python_script.py 的行如下:

python /directory/directory/python_script.py

代码在这个实现上不起作用,因为当您在终端中键入 python 时,它实际上会启动 Python 3.6 而不是我的 python_script.py 使用的 Python 2.7(我错误地认为默认系统 Python 将是 Python 2.7我的 Mac 自带的)。解决方案(根据上面的 Stack 建议)是 cd 在我有我的 python_script.py 的目录中,然后只需键入以下内容即可从那里运行它:

./python_script.py

希望有一天这对某人有所帮助。


(我可能应该删除这篇文章,因为出于某种原因我一直在投票,但我会把它留给像我这样的其他新手)

【讨论】:

    猜你喜欢
    • 2019-03-03
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 2021-07-19
    相关资源
    最近更新 更多