如果我的 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脚本是不是正在运行

在我的 python 应用程序中嵌入 python 作为脚本语言

如何在 Windows 中执行 Python 脚本?

使用 Jython 将我的 Python 脚本作为 JAR 文件分发?

WSGI 脚本无法作为 Python 模块加载——500 内部服务器错误