echo $PATH 显示 python 脚本的路径,但它们不能被执行

pat*_*rat 4 scripting path python

我是使用 shell 的新手,想创建一个目录$HOME,我可以在其中放置所有 python 脚本,设置该目录的路径,以便我可以进入 Mac 上的任何文件夹并在某些文件上执行这些脚本,脚本不必包含在与用作这些脚本输入的文件相同的目录中。

我已经阅读并将其添加到我的.zshrc文件中:

export PATH="$HOME/python_functions/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)

然后我添加了一个名为sleep_plotter.pyto的脚本python_functions/bin,我计划将所有未来的脚本也放在那里。

但是,当我导航到包含要用作该脚本输入的文本文件的文件夹并键入 时python sleep_plotter.py 113testCtM113.txt,最后一个参数是我的脚本的文本文件输入,我收到以下错误消息:

python: can't open file 'sleep_plotter.py': [Errno 2] No such file or directory
Run Code Online (Sandbox Code Playgroud)

但是当我使用 调用路径时echo $PATH,我看到:

/Users/myname/python_functions/bin: 
Run Code Online (Sandbox Code Playgroud)

由此,我发现当我执行 Python 命令时,python 正在查看该目录,因此sleep_plotter.py即使我位于不包含此文件的其他文件夹中,它也应该能够运行。

我使用的是 Mac OSX 10.11.2、zsh 和 Anaconda 2.3.0。

tec*_*raf 5

PATH变量定义了执行命令时搜索的目录。但是,当您执行python sleep_plotter.py 113testCtM113.txt,sleep_plotter.pypython程序(命令)的参数。Shell 使用PATHfind python,而不是它的参数。

您可以向脚本添加可执行属性:

$ chmod +x /Users/myname/python_functions/bin/sleep_plotter.py
Run Code Online (Sandbox Code Playgroud)

shebang序列添加到 Python 脚本的顶部(第一行):

#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

并直接作为命令运行脚本:

$ sleep_plotter.py 113testCtM113.txt
Run Code Online (Sandbox Code Playgroud)