http://www.cnblogs.com/ocean1100/p/9276011.html
一开始代码头如上链接所述,是正常运行
#!/usr/bin/python
后面python脚本加了一些中文字符,比如print(“测试”)
代码头部变成
#!/usr/bin/python
# -*- coding: utf-8 -*-
这时候shell脚本调用python脚本就出错了
/scripts/xxx.py: line 1: #!/usr/bin/python: No such file or directory
这是为什么呢
网友评论:
换python3
别用python2了 中文编码搞死你
拥抱python3吧
—— 来自 HUAWEI MHA-AL00, Android 8.0.0上的 v2.0.4-play
SHELL脚本贴出来。
Python内容也贴出来。
贴全。
不要用 #!/usr/bin/python 用 #!/usr/bin/env python
赞同#5
你也可以which python看看。你的python绝对路径对了没
—— 来自 SAMSUNG GT-N7100, Android 4.0.4上的 v2.0.4
也可以运行你装的Python,参数是py的路径
路径错了吧 你输入which python看看路径先
一开始是正常的,指定的路径应该没问题才对
那就只能bash -x看看过程了
—— 来自 SAMSUNG GT-N7100, Android 4.0.4上的 v2.0.4
用dos2unix 转一下 py脚本
sudo chmod 777 xxx.py
应该就算这个问题
[root@FOSDEV ~]# python –version
Python 2.6.6
[root@FOSDEV ~]# ./test.py
hello,world
好支威有
[root@FOSDEV ~]#
#!/usr/bin/python
# -*- coding: utf-8 -*-
print “hello,world”
print “好支威有”
utf-8 无bom unix 格式 正常
转成dos 格式 就有错误提示
-bash: ./test.py: /usr/bin/python^M: bad interpreter: 没有那个文件或目录
好奇怪,难道bash做的这么弱,没法处理 \r\n ?
这是unix和dos的系统差异,不是bash弱的问题
—— 来自 HUAWEI MHA-AL00, Android 8.0.0上的 v2.0.4-play
讲道理,dos 用 \r\n 也是符合规范的
这又不是文本编码那样复杂的东西
做一下兼容处理 提升用户体验不好吗
大家都来讲道理嘛,linux下编辑好了py文件,你用记事本打来看看,都变成了什么鬼样子。
—-发送自 App for Android.
which python
—— 来自 OnePlus ONEPLUS A5010, Android 8.1.0上的 v2.0.4
1、拥抱python3
2、which python
Git本来就会自动转换啊,你为什么要在Windows下跑bash呢
我最后还是在shell脚本里改成
python xxx.py
而不是原来的
xxx.py
等一下,都用了print(“测试”),这代码就是python 3的吧?
linux下也有可能存在dos格式的文档呀
写代码又不是永远一个人
如果说文档的话应该不少,但是在linux下面有windows格式脚本的真的很少。毕竟#!/usr/bin/env python 在Windows下面是一点用都没有的
为何不直接Python3 加上py文件路径运行
DOS 和 Linux换行符问题
嗯 用python3也 解决不了问题 就是windows和linux 文本格式的问题
我ide里写完一般放上服务器时候都会转一下…算是踩得坑多了的经验吧
可以写个脚本把\r筛掉
调用的时候强行指定python bin的路径就是了
我一般直接用 centos 有两条命令 一个叫dos2unix 一个叫unix2dos 免得自己写脚本了