当 python 脚本从终端运行时,通常会找到 python 模块,但当在 bash script.Why 中调用相同的脚本时却找不到?

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?

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

ModuleNotFoundError: No module named 'email.MIMEMultipart'

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

Python 3.6 住在:

/Users/name/anaconda/bin/python

虽然 Python 2.7 存在于:

/usr/bin/python

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

#!/usr/bin/python

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

python /directory/directory/python_script.py

代码无法实现此实现,因为当您在终端中键入 python 时,它实际上会启动 Python 3.6 而不是 Python 2.7,而我的 python_script.py 是使用(我错误地认为默认系统 Python 是我的 mac 附带的 Python 2.7)。解决方案(根据上面的 Stack 建议)是在目录中 cd 我有我的 python_script.py 然后 运行 从那里输入:

./python_script.py

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


(我可能应该删除这个 post 因为我一直因为某些原因而被否决,但我会把它留给像我这样的新手)