awe*_*omo 8 python shell shebang
出于某种原因,-O
我访问的Red Hat Enterprise Server(版本5.3)上的shebang行中无法识别(优化)标志.在其他系统上,可以毫无问题地识别该标志.
在OS X上执行下面的脚本工作正常.-O
可以验证对标志的识别,因为它可以启用(当不存在时)或禁用(在给定时)if __debug__
条件下的任何内容:
#!/usr/bin/env python -O
if __name__ == '__main__':
if __debug__:
print 'lots of debugging output on'
print 'Fin'
Run Code Online (Sandbox Code Playgroud)
在RHE系统上执行相同的脚本会导致:
/ usr/bin/env:python -O:没有这样的文件或目录
如果没有该-O
标志,脚本将在RHE系统上正常执行(即,__debug__
内置变量将设置为True
).
有没有跨平台的方法来解决这个问题?是否有一种特定于平台的方法来解决shebang线上的标志问题给python解释器?
编辑: 设置__debug__
变量(不使用shebang标志)解释器范围的任何其他变通方法也很有趣.
某些系统不允许在#!
-style 行上出现多个参数。在任何情况下,“env hack”都不是解决路径问题的官方推荐方法 - 处理此问题的首选方法是让安装重写该行#!
以引用/bin/python
, /usr/bin/python
, 根据系统情况而定。
http://pubs.opengroup.org/onlinepubs/009695399/utilities/sh.html
制作一个小的 shell 脚本怎么样:
\n\n蟒蛇:
\n\n#!/bin/sh \n/usr/bin/env python -O "$@"\n
Run Code Online (Sandbox Code Playgroud)\n\n然后更改您的脚本以使用:
\n\n#!pythono \n
Run Code Online (Sandbox Code Playgroud)\n\n另请注意,将环境变量设置PYTHONOPTIMIZE
为非空字符串与使用标志相同-O
。从man python
手册页:
PYTHONOPTIMIZE\n If this is set to a non-empty string it is equivalent to specifying the\n -O option. If set to an integer, it is equivalent to specifying -O multi\xe2\x80\x90\n ple times.\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
1844 次 |
最近记录: |