如果我的 python 脚本作为 python script.py 运行,但当作为 ./script.py 运行时,我的 python 脚本运行良好 [重复]
Posted
技术标签:
【中文标题】如果我的 python 脚本作为 python script.py 运行,但当作为 ./script.py 运行时,我的 python 脚本运行良好 [重复]【英文标题】:My python script works well if it is run as python script.py but not when run as ./script.py [duplicate] 【发布时间】:2018-09-11 09:07:44 【问题描述】:我的python版本是
Python 2.7.12(默认,2017 年 11 月 20 日,18:23:56)[GCC 5.4.0 20160609] 开启 linux2 输入“help”、“copyright”、“credits”或“license”获取更多信息 信息。
这是我的 python 脚本:
def main():
print " Generating Initial data"
if __name__ == '__main__':
main()
如果我运行它,
/test$ python gen_in_data.py
Generating Initial data
一切正常。
但是如果我运行它,
/test$ ./gen_in_data.py
./gen_in_data.py: line 1: syntax error near unexpected token `('
./gen_in_data.py: line 1: `def main():'
它正在抛出这个错误。 请让我知道这个问题。
【问题讨论】:
这个错误几乎可以肯定意味着你的 shell 正在运行脚本,而不是 Python 解释器。默认情况下,可执行脚本由 shell 运行;你需要一个 shebang 行来指定一个不同的解释器——在这种情况下,可能是/usr/bin/env python
或不太常见的硬编码路径,如 /usr/local/bin/python
。 (我确信这是一个现有问题的副本,它将有一个更详细的答案,可以更好地解释事情......让我找到它。)
有关 shebang 行的信息,请参阅此答案:***.com/a/2429517/6481442
This question 也有一些不错的信息。
【参考方案1】:
在文件开头添加这个是特殊注释
#!/usr/bin/python
#-*-coding: utf-8-*-
【讨论】:
为什么?为了确保如果 Python 在/usr/local/bin
中他的脚本不会运行,并且由于没有人向他解释这意味着什么,他将无法调试它?或者,如果他的代码不是 UTF-8 格式,要确保这是一个错误?以上是关于如果我的 python 脚本作为 python script.py 运行,但当作为 ./script.py 运行时,我的 python 脚本运行良好 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在我的 python 应用程序中嵌入 python 作为脚本语言