如何在Mac OS X终端中运行Python脚本而无需键入完整路径?

10

我使用的是 Mac OS 10.6 Snow Leopard,我想要将一个目录添加到我的 PATH 变量中,这样我就可以通过在终端提示符中键入:python alarm.py 来运行我编写的小脚本。

我将路径放入了我的 .profile 文件中,并且当我 echo $PATH 时似乎已经显示出来了,但 Python 仍然找不到我放在那个目录中的脚本。

下面是我主目录中 .profile 文件的内容:

~ toby$ vim .profile 
export PATH=/Users/tobylieven/Documents/my_scripts:$PATH

以下是echo $PATH的输出,一切看起来都很正常:

~ toby$ echo $PATH
/Users/tobylieven/Documents/my_scripts:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

这是我想要运行的脚本:

~ toby$ ls /Users/tobylieven/Documents/my_scripts 
-rwxrwxrwx@ 1 tobylieven  staff  276 17 Jan 21:17 alarm.py

这是我试图使用的命令来运行脚本和出现的错误信息:

~ toby$ python alarm.py 
python: can't open file 'alarm.py': [Errno 2] No such file or directory

如果有人知道我可能做错了什么,那就太好了。非常感谢。
5个回答

25

PATH只对可执行文件有效,不能用于Python脚本。请将以下内容添加到Python脚本开头:

#!/usr/bin/env python

然后运行

sudo chmod a+x /Users/tobylieven/Documents/my_scripts/alarm.py
然后,你只需要输入 alarm.py 就可以执行你的程序了。

1
太棒了!它可以工作:)。非常感谢:D。只是让大家知道,在MacBook Pro上,您可以通过按alt+3键来键入“#”符号。 - tobuslieven

6

你正在使用哪个Python版本?

你是通过brew安装的吗? 它使用了不同的路径。

which python3 或者 which python

选择你想要的版本

复制输出结果

将其粘贴到你的Python文件的顶部

在路径前面添加一个#!,使其看起来像这样

#!/usr/local/bin/python3

确保更改文件权限

chmod +x filename

将该文件放入路径中的文件夹中

不确定该文件夹是否在你的路径中?

echo $path

如何将该文件夹添加到你的路径中?

首先找到你的路径

echo $HOME

如果你正在使用bash或zsh,你可能会有类似于以下内容的信息

~/.bash_profile~/.bashrc~/.zshrc文件的底部

export PYTHON_UTILS="$HOME/code/python/utils"

export PATH="$PYTHON_UTILS:$PATH"

考虑删除文件扩展名.py,因为在这种情况下它是不必要的

关闭并重新打开终端,它将通过路径源化你的文件

现在你应该能够像使用bash命令一样处理你的Python文件

你不需要使用python3 filename.py来运行文件,你可以直接使用filename

无论你位于文件系统的哪个位置!


5

修改alarm.py文件,包含以下内容:

#!/bin/python

作为文件的第一行。(或者 /usr/bin/python,取决于您的Python解释器所在位置。您可以通过在终端中输入:which python 来找到这个位置。)

然后,您只需要运行 alarm.py 而不是 python alarm.py。

例如:

~ toby$ alarm.py  

而 phihag 几秒钟就打败了我,他是对的,您需要通过 chmod 添加执行权限以便运行 alarm.py。


4
你需要修改Python的特定路径变量:PYTHONPATH。
因此:
export PYTHONPATH=/Users/tobylieven/Documents/my_scripts

以下内容应该可以帮助你理解。

参见:Python模块搜索路径


-1

作为一个从Windows转来的程序员,我在OS X上遇到了一个非常困扰我的问题,那就是很难获取当前脚本所在的目录。

我找到了这个方法。

#! /bin/zsh 
cd "${0:h}"  

现在,您可以相对于执行的脚本来执行Python文件,而不必知道Python文件的确切路径。这可能有助于提高脚本和.command文件的效率,但也可能没有帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接