如何在Mac OS X终端运行Python脚本而无需输入完整路径?
我在使用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 个回答
把alarm.py文件的最上面一行改成:
#!/bin/python
(或者是/usr/bin/python,这要看你的Python解释器在哪里。你可以在终端输入:which python
来找出它的位置。)
这样你就可以直接运行alarm.py
,而不需要输入python alarm.py
了。
比如:
~ toby$ alarm.py
还有,phihag比我早了几秒钟,他说得对,你需要给alarm.py添加执行权限(通过chmod命令)。
你想用哪个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
来运行文件,只需用文件名
就可以了
在你文件系统的任何地方都可以!
PATH 这个东西只适用于可执行文件,而不是 Python 脚本。如果你想让你的 Python 脚本可以直接运行,先在你的脚本开头加上以下内容:
#!/usr/bin/env python
然后运行
sudo chmod a+x /Users/tobylieven/Documents/my_scripts/alarm.py
这样,你就可以直接输入 alarm.py
来执行你的程序了。