echo $PATH 显示 python 脚本的路径,但无法执行

echo $PATH 显示 python 脚本的路径,但无法执行

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

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

export PATH="$HOME/python_functions/bin:$PATH"

sleep_plotter.py然后我添加了一个名为to 的脚本python_functions/bin,这也是我计划放置所有未来脚本的地方。

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

python: can't open file 'sleep_plotter.py': [Errno 2] No such file or directory

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

/Users/myname/python_functions/bin: 

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

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

答案1

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

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

$ chmod +x /Users/myname/python_functions/bin/sleep_plotter.py

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

#!/usr/bin/env python

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

$ sleep_plotter.py 113testCtM113.txt

答案2

如果你想扩展 python 来搜索其他目录,那么你需要做两件事:设置 PYTHONPATH 变量并使用-mPython 中的选项。

在(注意那里~/.zshrc没有):$PATH

export PYTHONPATH="$HOME/python_functions/bin"

并在终端使用:

python -m sleep_plotter 113testCtM113.txt

这与您之前输入的内容一样多,因为您必须省略.pypython 文件的扩展名。

相关内容