2012-10-21 195 views
1

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/bin中/ Python的

$ which python 
/usr/bin/python 
$ ./prawn.py 
bash: ./prawn.py: /usr/bin/python^M: bad interpreter: No such file or directory 

但是当我运行使用 “蟒蛇prawn.py” 它,它的工作原理。

我该如何解决这个问题?

回答

5

^M表示您正在使用DOS行结束符。改为使用UNIX行尾。你可以尝试从DOS行结束将您的文件使用sed这样UNIX行尾:

sed -E 's/\'$'\r''$//' <prawn.py> prawn.unix.py 

转换后的文件将在prawn.unix.py

+0

谢谢你这么多,我忘了我写这在Windows 我做到了更长的路之前,我看到了你的编辑 – Property404

+3

如果[DOS2UNIX的(! http://manpages.ubuntu.com/manpages/natty/man1/dos2unix.1.html)已安装,使用它比sed调用更容易。 – GreenMatt

1

看起来有一个^M您的shebang线,删除您的第一行的所有内容,然后重新键入它(#!/usr/bin/env python)手动。

1

它本质上是相同的错误:您的shebang行以回车\r/^M结尾。 env打印了这一点(它打印python,它确实在该行: No such file or directory的开头回车和打印。

如果您直接致电pythonpython^M没有找到。

对于这两种情况,去除多余的性格;与env的版本是最好的一个,一旦你做它的工作

相关问题