我是使用 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
的一个参数。 python
Shell 使用PATH
find python
,但不使用它的参数。
您可以向脚本添加可执行属性:
$ chmod +x /Users/myname/python_functions/bin/sleep_plotter.py
添加一个舍邦序列到 Python 脚本的顶部(第一行):
#!/usr/bin/env python
并直接作为命令运行脚本:
$ sleep_plotter.py 113testCtM113.txt
答案2
如果你想扩展 python 来搜索其他目录,那么你需要做两件事:设置 PYTHONPATH 变量并使用-m
Python 中的选项。
在(注意那里~/.zshrc
没有):$PATH
export PYTHONPATH="$HOME/python_functions/bin"
并在终端使用:
python -m sleep_plotter 113testCtM113.txt
这与您之前输入的内容一样多,因为您必须省略.py
python 文件的扩展名。