Ubuntu版本:12.04 Python版本:2.7.3
我有一个开始的脚本(prawn.py):
#! /usr/bin/env python
from random import choice
import os
from webbrowser import open_new
import urllib
print("!")
def getsource(url): page=urllib.urlopen(url);sourcecodey=page.read();page.close;return sourcecodey
#etc
当我在终端中运行时:
$ ./prawn.py
: No such file or directory
当我将第一行更改为#时!的/ usr /斌/蟒
$ which python
/usr/bin/python
$ ./prawn.py
bash: ./prawn.py: /usr/bin/python^M: bad interpreter: No such file or directory
但是当我使用“python prawn.py”运行它时,它可以工作。
我该如何解决这个问题?
答案 0 :(得分:5)
^M
表示您正在使用DOS行结尾。请改用UNIX行结尾。您可以尝试使用sed
将文件从DOS行结尾转换为UNIX行结尾:
sed -E 's/\'$'\r''$//' < prawn.py > prawn.unix.py
转换后的文件将位于prawn.unix.py
。
答案 1 :(得分:1)
似乎你的shebang行中有^M
,删除第一行的所有内容,然后手动重新输入(#!/usr/bin/env python
)。
答案 2 :(得分:1)
基本上是同一个错误:你的shebang行以回车\r
/ ^M
结束。 env
将其打印出来(打印python
,它会回车并在行: No such file or directory
的开头打印。
如果您直接致电python
,则找不到python^M
。
对于这两种情况,请删除该额外字符;一旦你使用它,env
的版本就更好了。