python3不会从mac shell脚本运行

问题描述 投票:3回答:4

我试图在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脚本?

python macos shell automator
4个回答
2
投票

既然你有shebang线,你可以做./my_script.py,它应该运行Python 3。


0
投票

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

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


0
投票

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

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

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

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


0
投票

如果python引用Python 2那么那就是你应该期待的。在命令行中使用python3,或者遵循脚本本身来定义其解释器。

更详细一点,确保文件的第一行包含有效的shebang(你似乎已将其排序);但是,如果你明确地说python script.py,那么shebang不会影响将使用的口译员。相反,使文件可执行,并使用./script.py运行它。

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

© www.soinside.com 2019 - 2024. All rights reserved.