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

10 投票
5 回答
51178 浏览
提问于 2025-04-16 10:08

我在使用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 个回答

5

把alarm.py文件的最上面一行改成:

#!/bin/python

(或者是/usr/bin/python,这要看你的Python解释器在哪里。你可以在终端输入:which python来找出它的位置。)

这样你就可以直接运行alarm.py,而不需要输入python alarm.py了。

比如:

~ toby$ alarm.py  

还有,phihag比我早了几秒钟,他说得对,你需要给alarm.py添加执行权限(通过chmod命令)。

6

你想用哪个Python?

你是用brew安装的吗?那它的路径会不一样。

which python3 或者 which python

选择你想要的那个

把输出的内容复制下来

粘贴到你的Python文件最上面

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

#!/usr/local/bin/python3

确保修改文件的权限

chmod +x 文件名

把这个文件放到一个在你路径里的文件夹里

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

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 文件名.py来运行文件,只需用文件名就可以了

在你文件系统的任何地方都可以!

25

PATH 这个东西只适用于可执行文件,而不是 Python 脚本。如果你想让你的 Python 脚本可以直接运行,先在你的脚本开头加上以下内容:

#!/usr/bin/env python

然后运行

sudo chmod a+x /Users/tobylieven/Documents/my_scripts/alarm.py

这样,你就可以直接输入 alarm.py 来执行你的程序了。

撰写回答