python3不会从mac shell脚本运行

时间:2017-01-09 19:12:19

标签: python macos shell automator

我正在尝试在macOS 10.12上使用Automator来启动Python 3脚本。当我使用以下命令从终端运行脚本时,脚本运行正常:python3 my_script.py

Automator有一个“运行Shell脚本”功能,它使用/ bin / bash shell。 shell将使用命令python my_script.py运行脚本,但这似乎只适用于用Python 2.7编写的脚本。

我的脚本以#!/usr/bin/env python3开头,我认为它会将shell指向正确的python解释器,但似乎并非如此。

作为一种解决方法,如果我插入python解释器的完整路径,我可以运行脚本:/Library/Frameworks/Python.framework/Versions/3.5/bin/python3,但我认为这是次优的,因为如果/当我更新到Python时命令可能不起作用3.6。

有没有更好的方法来指导/ bin / bash shell运行Python3脚本?

4 个答案:

答案 0 :(得分:2)

由于你有shebang行,你可以./my_script.py,它应该用Python 3运行。

答案 1 :(得分:0)

您可以使用brew install python3通过Homebrew安装Python 3,并使用#!/usr/local/bin/python3作为工具。

这不是完美的解决方案,但仍然比使用解释器的完整路径更好。

答案 2 :(得分:0)

您可以创建~./bash_profile文件,然后将路径导出到python 3 bin文件夹,看起来像

export PATH=“path-to-python3-bin-folder:$PATH”

每次输入终端时,键入source ~./bash_profile,现在您可以在终端中调用python3作为函数来调用代码。

另一方面,我建议您下载Anaconda,因为您可以使用所需的python版本轻松创建虚拟环境。

答案 3 :(得分:0)

如果python引用Python 2,那么这就是您应该期望的。在命令行中使用python3,或根据脚本本身来定义其解释器。

更详细地,请确保文件的第一行包含有效的shebang(您似乎对此进行了排序);但如果您明确说出python script.py,则shebang不会影响将使用的解释器。而是将文件设置为可执行文件,然后使用./script.py运行它。

实际上,您也可以在命令行上使用envenv python3 script.py也应在提示符下工作。