you*_*arx 19 python command-line bash
我正在尝试使我的.py文件可执行,以便我可以使用 运行它们./filename.py,但它对我不起作用。
我所做的是添加shebang#!/usr/bin python3并使用命令chmod +x filename.py。当我./filename.py以普通用户身份运行时,我收到以下错误消息
bash: ./filename.py: /usr/bin: bad interpreter: Permission denied
Run Code Online (Sandbox Code Playgroud)
作为超级用户,它告诉我这个:
sudo: unable to execute ./filename.py: Permission denied
Run Code Online (Sandbox Code Playgroud)
使用通常的方法 ( python3 filename.py)打开文件效果很好。
当我将shebang更改为#!/usr/bin/env python3它时,它告诉我:
/usr/bin/env: ‘python3\r’: No such file or directory
Run Code Online (Sandbox Code Playgroud)
Byt*_*der 40
问题是你的行尾字符。您的文件是在 Windows 系统上创建或编辑的,并使用 Windows/DOS 样式的行尾 (CR+LF),而 Ubuntu 等 Linux 系统则需要 Unix 样式的行尾 (LF)。
有一个简单的工具可以为您转换两种不同的样式,称为dos2unix.
通过运行安装它
sudo apt install dos2unix
Run Code Online (Sandbox Code Playgroud)
之后,您可以使用以下命令之一在任一方向转换文件
dos2unix /PATH/TO/YOUR/WINDOWS_FILE
unix2dos /PATH/TO/YOUR/LINUX_FILE
Run Code Online (Sandbox Code Playgroud)
例子:
$ 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
Run Code Online (Sandbox Code Playgroud)
回到你首先尝试过的,shebang 行
#!/usr/bin python3
Run Code Online (Sandbox Code Playgroud)
当然是错误的。它尝试/usr/bin使用python3脚本的文件名作为参数执行文件。这显然必须失败,因为它/usr/bin是一个目录并且没有可执行文件。
| 归档时间: |
|
| 查看次数: |
74684 次 |
| 最近记录: |