python 解释器声明 unix #!/usr/bin/env python

1. 问题的开始
在代码移植到unix平台后,部分应用在运行时报如下错误:
subprocess.Popen():OSError:[Errno 8] python中的exec格式错误?
查阅得知可能是找不到编译器,但新的问题是python run.py仍然报错。。。。。。
需要注意的是,这个问题是在unix下才会发生的,另一个奇怪的事实是对于部分简单的py脚本并没有出现这个问题。
案例:
test.py
#coding:utf-8
print(‘www’)
python test.py #正常运行

查阅发现所有的解决方案都是声明编译器。
总而言之,声明解释器就可以解决了。
#!/usr/bin/env python

2. python文件声明
使用Linux系统时:
#!/usr/bin/python:代码文件由python编译器执行,否则执行时需要显示调用
python XXX.py
添加声明后,可以直接用./XXX.py方式执行文件,当然需要可执行权限
chmod +x XXX.py
添加此行代码能方便执行.py脚本。

#!/usr/bin/env python:这种写法是为了解决python并没有装在默认的/usr/bin路径下所带来的问题,这行代码会使声明需要到env设置里查找python的安装路径,再查找到的解释器执行脚本。
如果安装了多个版本的Python,/usr/bin/env将确保使用的解释器是您环境中的第一个$PATH。

#-- coding:utf-8 --:是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。

使用Windows系统时:
系统会用文件名的后缀(扩展名)来判断文件类型。因此,#!/usr/bin/python或#!/usr/bin/env python在Window系统下相当于注释。

3. 关于#!
在Unix中,一个可以解释的可执行文件可以通过#!在第一行的开头加上解释器(以及它可能需要的任何标志)来指示要使用的解释器。
当然,正在其它平台,这条规则不一定适用(但“shebang line”没有任何坏处,如果将该脚本复制到具有 Unix基础的平台,例如Linux,Mac ,也会起同样作用)。

这被称为shebang线。
维基百科释义:
在计算中,一个shebang(也称为hashbang,hashpling,pound bang或crunchbang)指的是字符“#!” 当它们是解释器指令中的前两个字符作为文本文件的第一行时。在类Unix操作系统中,程序加载器将这两个字符作为文件是脚本的指示,并尝试使用文件中第一行其余部分指定的解释器来执行该脚本。

python 解释器声明 unix #!/usr/bin/env python的更多相关文章

  1. 调用python脚本报错/usr/bin/env: python : No such file or directory

    一.调用python脚本报错 /usr/bin/env: python: No such file or directory 二.解决方法 原因是在windows上编写的脚本,使用dos2unix对脚 ...

  2. 关于在linux python源文件头部添加 “#!/usr/bin/env python” 不能直接运行的问题

    如果环境变量设置正确 如果文件是从windows拷贝到linux中的 可能是换行符造成的.试试dos2unix命令,或相似的命令,把dos格式的换行符转为unix格式.

  3. /usr/bin/python与/usr/bin/env python的区别

    Infi-chu: http://www.cnblogs.com/Infi-chu/ /usr/bin/env python执行时,先查找python解释器的路径,然后执行./usr/bin/pyth ...

  4. python中#!/usr/bin/python与#!/usr/bin/env python的区别

    目的是在运行python脚本的时候告诉操作系统我们要用python解释器去运行py脚本 所以我们在第一句往往会写如下两句中的其中一句: #!/usr/bin/python 或 >#!/usr/b ...

  5. #!/usr/bin/env python 是什么

    #!/usr/bin/env python 这一行注释经常出现在Python脚本的第一行.这一行到底用来干嘛的呢?原因很简单,任何Python脚本执行都需要靠Python解释器.这一行注释正是告诉计算 ...

  6. 人们为什么在Python脚本的第一行上编写#!/ usr / bin / env python shebang?

    在我看来,如果没有该行,文件运行相同. #1楼 您可以使用virtualenv尝试此问题 这是test.py #! /usr/bin/env python import sys print(sys.v ...

  7. #!/usr/bin/env python与#!/usr/bin/python的区别

    [摘自:http://blog.csdn.net/wh_19910525/article/details/8040494] 一般的python文件的开头都有#!/usr/bin/python.这是什么 ...

  8. !/usr/bin/env python和!/usr/bin/python的区别

    脚本语言第一行 作用:文件中代码用指定可执行程序运行 #!/usr/bin/Python  执行脚本时,调用/usr/bin下python解释器 #!/usr/bin/env python  在环境设 ...

  9. python中#!/usr/bin/env python与#!/usr/bin/python

    通常在脚本语言的第一行会看到#!/usr/bin/env python 与 #!/usr/bin/python其中之一,这两句话的目的都是指出你的python文件用什么可执行程序去运行它. #!/us ...

随机推荐

  1.  «»<>

     空格   «双小于 »双大于 <小于 >大于

  2. 查看ie版本

    window10系统还好说,一般都是IE11版本,其他系统或服务器看=查看ie版本就很烦 方法一:按组合键  ALT+H 打开“帮助”,再按 A 选择“关于Internet Explorer” 方法二 ...

  3. 题解【UVA12097】Pie

    题目描述 输入格式 输出格式 输入输出样例 输入样例#1 3 3 3 4 3 3 1 24 5 10 5 1 4 2 3 4 5 6 5 4 2 输出样例#1 25.1327 3.1416 50.26 ...

  4. testng如何实现用例间依赖

    todo: 参考: https://www.cnblogs.com/znicy/p/6534893.html

  5. 解决报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: TLS handshaketimeout

    报错: [root@localhost /]# sudo docker pull ubuntuError response from daemon: Get https://registry-1.do ...

  6. 解决Macbook Pro蓝牙不可用问题

    谷歌搜索了下,在威锋网看到一个帖子,需要关机重置电源管理单元和系统NVRAM恢复出厂设置,具体操作如下:1.关机2.同时按下shift+control+option+power,保持5秒左右3.先按下 ...

  7. schroeder reverb matlab实现

    原理参考:Natural sounding artificial reverberation combFilter.m: function output = combFilter(delay, gai ...

  8. 新手学习PHP的避雷针,这些坑在PHP开发中就别跳了

    不要!用记事本编辑php文件 早些年能用记事本编程是一些人自我吹嘘的资本,能用记事本编程就是牛逼的代名词.但是这里要告诫大家的是,千万不要使用Windows自带的记事本编辑任何文本文件.用Window ...

  9. node.js 和 yarn 安装

    电脑环境 windows10 专业版 64 位 node.js 安装 Node.js 官方网站下载:https://nodejs.org/en/ 之后一步步得傻瓜式安装 配置环境变量和查看node.j ...

  10. 执行ifconfig eth2 up命令报错eth2: unknown interface: No such device的解决思路

    排查问题思路 一般出现这种状况都是网卡mac地址错误引起的!要么网卡配置文件中的mac地址不对,要么/etc/udev/rules.d/70-persistent-net.rules文件中的mac地址 ...