/ usr / bin / env:’python3 \ r’:没有这样的文件或目录

我正在尝试使我的.py文件可执行,因此我可以使用./filename.py运行它们,但它不适用于我。

我做的是添加shebang #!/usr/bin python3并使用命令chmod +x filename.py 。 当我以普通用户身份运行./filename.py ,我收到以下错误消息

 bash: ./filename.py: /usr/bin: bad interpreter: Permission denied 

作为超级用户,它告诉我这个:

 sudo: unable to execute ./filename.py: Permission denied 

打开文件通常的方法( python3 filename.py )它工作正常。

当我将shebang改为#!/usr/bin/env python3它告诉我:

 /usr/bin/env: 'python3\r': No such file or directory 

问题是你的行结束字符。 您的文件是在Windows系统上创建或编辑的,并使用Windows / DOS样式的行结尾(CR + LF),而像Ubuntu这样的Linux系统需要Unix样式的行结尾(LF)。

有一个简单的工具可以为你转换两种不同的样式,称为dos2unix

通过运行安装它

 sudo apt install dos2unix 

之后,您可以使用其中一个命令在任一方向转换文件

 dos2unix /PATH/TO/YOUR/WINDOWS_FILE unix2dos /PATH/TO/YOUR/LINUX_FILE 

例:

 $ cat test.py #!/usr/bin/env python3 print("ok") $ ./test.py /usr/bin/env: 'python3\r': No such file or directory $ dos2unix test.py dos2unix: converting file test.py to Unix format ... $ ./test.py ok 

还要回到你先尝试的那个,shebang线

 #!/usr/bin python3 

当然是错的。 它尝试使用python3和脚本的文件名作为参数执行文件/usr/bin 。 这肯定会失败,因为/usr/bin是一个目录而没有可执行文件。