$PATH具有正确的条目,但python无法执行

$PATH具有正确的条目,但python无法执行,python,python-3.x,Python,Python 3.x,我有路径变量指向我的项目目录。但是,当我尝试从外部运行python脚本时,它不起作用。可能很简单,但我找不到答案。 我已经在谷歌上搜索并做对了。请帮我指出错误 此外,我已将路径添加到我的.bash_配置文件中,但不起作用: root@c3-redsuren-vm01:~# cat .bash_profile export PATH="$PATH:/opt/mssql-tools/bin:/root/my-project" root@c3-redsuren-vm01:~/my

我有路径变量指向我的项目目录。但是,当我尝试从外部运行python脚本时,它不起作用。可能很简单,但我找不到答案。 我已经在谷歌上搜索并做对了。请帮我指出错误

此外,我已将路径添加到我的.bash_配置文件中,但不起作用:

root@c3-redsuren-vm01:~# cat .bash_profile
export PATH="$PATH:/opt/mssql-tools/bin:/root/my-project"

root@c3-redsuren-vm01:~/my-project# python print_test.py
hello world
root@c3-redsuren-vm01:~/my-project# ./print_test.py
hello world
返回主目录,它是/root

root@c3-redsuren-vm01:~/my-project# cd ~
root@c3-redsuren-vm01:~# pwd
/root
尝试从主目录执行脚本:

root@c3-redsuren-vm01:~# python print_test.py
python: can't open file 'print_test.py': [Errno 2] No such file or directory
root@c3-redsuren-vm01:~# ./print_test.py
-bash: ./print_test.py: No such file or directory
root@c3-redsuren-vm01:~# python print_test.py
python: can't open file 'print_test.py': [Errno 2] No such file or 
directory
路径详细信息:

root@c3-redsuren-vm01:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/mssql-tools/bin:/root/my-project
root@c3-redsuren-vm01:~#

root@c3-redsuren-vm01:~/my-project# python print_test.py
hello world
如果我转到我的项目目录并运行脚本,它就可以正常工作。
提前谢谢

Python的参数应该是一个文件名;Python不会检查路径以查找当前目录以外的目录

在类似Linux的系统上,让脚本在任何地方都可执行的标准方法是放入有效的shebang,将脚本本身标记为可执行,并将其保存在
路径中的目录中;然后,您可以在任何地方仅使用文件名运行它

bash$pwd
/根
bash$echo“$PATH”| tr':''\n'| grep my|u项目
/root/my\u项目
bash$cat>我的项目/打印测试
#!/usr/bin/env python
打印('hej världen')
^D
bash$chmod+x我的项目/打印测试
bash$print\u测试
哈吉·沃尔登

(在最后一个命令实际工作之前,您可能必须进行hash-rprint\u测试)。

python解释器使用path变量仅导入模块。 若您想作为脚本运行,那个么它将取决于解释器的初始路径

您可以通过以下方式检查当前路径:

导入系统 打印(系统路径)
对于您的情况,如果您想从任何地方运行“print_test.py”,可以将其用作模块

并附加路径,如下所示:

sys.path.append('/opt/mssql-tools/bin:/root/my-project')
导入打印测试#这将执行脚本

如果不想进行模块化,可以选中此项:

当您不在保存脚本的目录中时,命令
/print\u test.py
不起作用。只要
print\u test.py
就可以了(但可能不要在脚本上使用
.py
扩展;
ls
bash
也没有扩展)。
sys.path
对应于
$PYTHONPATH
,而不是
$path