Python脚本给出::没有这样的文件或目录
我有几个Python脚本工作得很好,但一个脚本(截至今天上午)开始给我这个错误,如果我试图从bash运行它:
: 无此文件或目录
我可以通过执行python script_name.py
来运行'broken'脚本,并且在看了一下我拾取的一般想法之后,也许我的hashbang的行结束被改变了(默默地),所以我看着行结束一个工作脚本和一个破坏的脚本通过VI中的:set list
选项,如这个问题所示 – > 在文本文件中查看行结尾
这两个文件似乎结束使用相同的字符( $
),所以我有点在如何从这里继续的损失。 具体而言,如果实际上“ set list
不是正确的方法,那么如何实际“查看”结束行。
PS:脚本是可执行的,并且shebang在那里,我说只是这个脚本在周末之前工作正常,但是从今天早上开始给我这个错误。
– 编辑: –
通过dos2unix
运行脚本确实再次运行,但我想知道有什么方法可视化以VI(M)结尾的行,或者为什么Geany以某种方式将行结束符转换为首位(因为我从来没有在DOS下工作/ Windows系统)。
从上面的注释看起来你有dos的行尾,所以hashbang行没有正确处理。
在Vim中,行结束风格不会显示:set list
,因为该选项仅在读取/写入文件时使用。 在记忆线的结局总是那样,线结束。 用于文件的行结束风格保存在Vim每个文件选项中,奇怪地称为fileformat
。
要从Vim中查看/更改行结束样式,可以使用以下命令:
:set fileformat :set ff
它会显示dos
或unix
。 你当然想要unix
;-)。
要快速更改,可以使用以下命令保存文件:
:w ++ff=unix
或者如果你喜欢:
:set ff=unix
然后正常保存文件。
所以看到所有血淋淋的细节只是做:help file-formats
, :help file-formats
和:help fileformats
:help file-formats
就我个人而言,我发现它使用Python解释器的直接path有点不对。 由于你不使用Windows平台,你应该有程序env,通常在/ usr / bin(/ usr / bin / env)中。 尝试使用以下shebang:
#!/usr/bin/env python
不同的发行版在/ bin或/ usr / bin(或一些奇怪的位置)中存储python二进制文件,这使得脚本configuration无关(尽可能在这里,我们有可能将env存储在其他地方;尽pipe如此,可能env不在/ usr / bin中,比python错位)。
我有类似的问题(如果不完全相同),并为我工作。
此外,我有两个Python解释器(2.7.x和3.x)安装,所以我需要使用“python3”参数env。 AFAIR通常将不同的名称链接到不同的二进制文件,所以“env python”将在我的系统上运行python2.7,“env python3”(也就是python33,或者像那样的smth)会运行p3k,而“env python2”(也是python27,等)将运行Python 2.7.x. 宣布应该使用哪个版本的解释器似乎也是一个好主意。
您也可以使用dos2unix命令转换文件格式
DOS2UNIX的
这帮助我运行python脚本
这通常发生在我们在Windows中打开文件进行更改并保存时。 如果你打开文件,在每一行的末尾find^ M个字符
谢谢
我遇到了这个问题,在Windows上编辑我的代码,使用git检查它,检查并在Linux上运行它。
我的解决scheme是:告诉git做正确的事情。 我在Windows上发布了这个命令:
git config --global core.autocrlf true
修改文件并将其检入; 瞧,再也没有这个问题了。
正如在Git文档中讨论的那样。