我已经在网上寻找答案了很长一段时间,但这让我很头疼:
我正在使用Ubuntu 12.04,我想从终端执行Python脚本而不使用完整路径.
所以我将/ home / kyril / python / scripts /添加到PATH变量中,将以下内容放入./bashrc:
kyrilpathvariable="/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/kyril/Python/scripts/:/home/kyril/Bash/scripts"
if [ "$kyrilpathvariable" = "$PATH" ]; then
echo PATH already exported
else
PATH=$PATH:/home/kyril/Python/scripts/
PATH=$PATH:/home/kyril/Bash/scripts/
export PATH
fi
(我知道if子句不是必需的,但如果我输入exec bash,我不想在我的PATH中有两次.)
现在的问题是:这完全适用于我的Bash脚本,所以在通过chmod使它们可执行后,我只需输入$script.sh即可执行.但是,如果我键入$python3 script.py,则会引发以下错误:python3:无法打开文件’script.py’:[Errno 2]没有这样的文件或目录
如果我输入脚本的完整路径,它的工作原理.有谁知道我做错了什么?我是否必须将目录添加到PYTHONPATH? (据我所知,这只对导入模块有帮助).
多谢你们!
解决方法:
当直接调用python3时,python运行你告诉它的脚本文件,而不使用$PATH来查找它. PYTHONPATH无关紧要 – 用于搜索Python模块.
我猜你在运行script.py时遇到错误的解释器问题.我不知道你的脚本的第一行是什么,但它应该是这样的:
#!/usr/bin/env python3
或者如果您需要更精细的控制:
#!/usr/bin/env python3.2
对于Python 2脚本:
#!/usr/bin/env python2
要么:
#!/usr/bin/env python2.7
在尝试使用它们之前,应检查系统上是否存在这些可执行文件.