【问题标题】:mod_python ignoring shebang and using Python 2 instead of 3mod_python 忽略 shebang 并使用 Python 2 而不是 3
【发布时间】:2015-09-21 10:26:05
【问题描述】:

我正在尝试在浏览器中运行脚本。我安装了 mod_python 用于在服务器上运行基于 Web 的应用程序,并在我的脚本中设置了 shebang:

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

import sys

def index():
    print ("Content-type: text/html\n")
    print('Version Python {0}'.format(sys.version_info[0]))

if __name__ == '__main__':
    index()

但是,当我从浏览器 (my application) 运行我的脚本时,我看到 Python 版本是 2。当我从控制台运行脚本时,使用:

python3 index.py

Python 3.3.5 版按预期使用。为什么mod_python 忽略了shebang?

UPD。问题已结束

  • 我选择退出 mod_python。
  • 我在 shebang 中发现了一个错误(我应该为 Unix 设置 \n 行尾)。
  • 在 php 上编写用于运行 python 3 的包装器

【问题讨论】:

  • 你能显示整个代码的开头几行吗?你是在 linux 上运行的吗?
  • @AnandSKumar 我在我的问题中添加了整个脚本,我使用 CentOS
  • @jonrsharpe 如果我运行脚本 ./myscriptname.py 引发错误 没有这样的文件或目录
  • @jonrsharpe 我从浏览器向服务器发送请求。 My script
  • 这是 mod_python 安装方式的问题。如果您自己安装了 mod_python,请参阅 modpython.org/live/current/doc-html/… 以获取说明。如果您安装了包管理器,则需要查看他们的文档。我正在投票关闭并将其移至 ServerFault。

标签: python python-3.x mod-python


【解决方案1】:

在文件上设置可执行标志:

chmod a+x yourfile.py

然后,执行如下:

./yourfile.py

【讨论】:

  • 虽然在一般意义上是正确的,但我不确定这是否有助于 OP 处理 “来自浏览器” 的意思。
  • @LeoKomarov 然后提供足够的信息,否则你永远得不到答案
【解决方案2】:

当使用 shebang 时,请按照以下步骤运行代码。

这使您的文件可执行

chmod +x index.py

这有助于您的代码执行

./index.py

【讨论】:

    猜你喜欢
    • 2019-07-10
    • 2017-10-03
    • 2020-11-03
    • 2016-11-19
    • 2017-03-18
    • 2015-11-01
    • 1970-01-01
    • 2019-10-04
    相关资源
    最近更新 更多