我正在开展一个小方案项目,这是我第一次使用Flask。 我正在使用虚拟环境,因此我的脚本开头有一个shebang,看起来像这样
#!flask/bin/python
当我尝试从命令行执行脚本时,出现以下错误:
-bash: ./run.py: flask/bin/python^M: bad interpreter: No such file or directory
我知道这意味着找不到python解释器,但如果我导航到flask / bin,我可以看到里面的解释器。这些是flask / bin中的所有文件
激活
activate.csh
activate.fish
activate_this.py
easy_install的
easy_install的-2.7
点子
PIP2
pip2.7
蟒蛇
蟒蛇,配置
python2 - >蟒蛇
python2.7 - >蟒蛇
轮子
我尝试删除我的虚拟环境目录并再次创建它,但这没有帮助。
为什么我的shebang在这种情况下不起作用?
答案 0 :(得分:0)
-bash: ./run.py: flask/bin/python^M: bad interpreter: No such file or directory
Bash忽略了shebang线(它是对bash的评论)。而shebang行则由Unix程序加载器处理。如果可执行文件的前两个字符是#!
,则程序加载器
#!
之后的第一个非空白字符开始。简而言之,程序加载器正在python^M
中寻找名为python
而不是flask/bin
的文件。该文件不存在。
立即解决方案是针对您的脚本运行dos2unix
。长期解决方案不是使用Windows工具来创建针对Unix机器的文件。
答案 1 :(得分:0)
您是否在Windows环境中编写脚本然后将其移至UNIX环境?由于行结尾不同,因此在一个环境中编写的文件不会自动在另一个环境中工作。有关详细信息,请参阅here。
要解决此问题,请尝试使用dos2unix,或者如果您在Windows上使用类似Notepad ++的内容,通常会选择以Windows格式保存文件。
答案 2 :(得分:-1)
flask / bin / python ^ M,是因为你的文件是用windows编写的,用unix执行的吗?