我创建了脚本 python 并将其移至 /usr/bin 并通过 sdfgdgh 命名脚本而不使用 .py 并在脚本中编写此代码
#! /usr/bin/python
print("worked")
Run Code Online (Sandbox Code Playgroud)
我得到了脚本 chmod +x
但是当我输入终端 sdfgdgh 给我错误:
错误的解释器没有这样的文件或目录 /usr/bin/python
为什么?解决方案是什么?
问题出在您的 python 安装上。可能你的/usr/bin/python要么根本不存在,要么是一个指向不存在的python的死符号链接。
所以第一个解决方案是检查是否/usr/bin/python存在。如果是这样,请检查它是否不是死链接,如果是,请修复链接以指向现有的 python 解释器:
cd /usr/bin
sudo ln -fs <full_path_to_existing_python_binary> python
Run Code Online (Sandbox Code Playgroud)
如果您不能或不想更改/usr/bin/python但您安装了 python 并且系统识别了它的位置(即python从 shell调用),您可以尝试更改脚本作为解决方法:
#! /usr/bin/env python
print("worked")
Run Code Online (Sandbox Code Playgroud)
这样你的脚本就会使用 python 作为解释器,而不管真正的 python 位置如何,只要它在你的 PATH 中。
$ which python
/usr/bin/python
Run Code Online (Sandbox Code Playgroud)
python -V
Python 2.7.5
Run Code Online (Sandbox Code Playgroud)
方法一:检查dos文件格式,cat -v filepath看看该行是否以^M.
方法b:
vim filepath-> :set ff 查看,例如"eni.py" [dos] 64L, 2151C
方法 c:
file filepath检查是否有CRLF
file_path:Python 脚本,UTF-8 Unicode 文本可执行文件,带有 CRLF 行终止符
vim filepath解决方案:您可以使用then将filefort设置为unix:set ff unix
小智 6
我遇到了类似的问题,我在 Ubuntu 20.04 中安装了一个依赖于 Python 2 的软件包。这搞乱了python. 我必须卸载该软件包:qjoypad,xboxdrv以及另一个;卸载 python 2 与sudo apt remove python.
然后为了确认,我使用了which python它给出了空白输出。下一步是cd /usr/bin创建一个符号链接sudo ln -fs python3 python。