在macOS上从Python 2升级到3
我正在准备将一个web应用程序从Python 2.7升级到3.7。我遇到了以下问题: 在终端中输入/usr/bin/python正在工作:在macOS上从Python 2升级到3,python,Python,我正在准备将一个web应用程序从Python 2.7升级到3.7。我遇到了以下问题: 在终端中输入/usr/bin/python正在工作: Python 2.7.10 (default, Feb 22 2019, 21:55:15) 输入/usr/local/bin/python也可以: Python 3.7.4 (v3.7.4:e09359112e, Jul 8 2019 14:54:52) 使用#/test.py文件中的usr/bin/python在浏览器中显示: 2.7.10 (d
Python 2.7.10 (default, Feb 22 2019, 21:55:15)
输入/usr/local/bin/python也可以:
Python 3.7.4 (v3.7.4:e09359112e, Jul 8 2019 14:54:52)
使用#/test.py文件中的usr/bin/python在浏览器中显示:
2.7.10 (default, Feb 22 2019, 21:55:15)
因此,Python2.7正在运行。现在在#中插入“/local”/上述test.py文件中的usr/bin/python导致:
500 Internal Server Error
为什么呢?我不知道,因为路径/usr/local/bin/python在终端中工作
test.py是一个简单的文件,如下所示:
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
print "Content-Type: text/plain;charset=utf-8"
print
import sys
print(sys.version)
和.htaccess如下所示:
Options +ExecCGI
AddHandler cgi-script .py
在Python 2中,
print
是一个关键字,因此不需要括号,print“Content Type”
是有效的语法
在Python 3中,print
是一个函数,需要调用括号
因此,您看到的500错误是由于程序失败(在本地运行脚本或web应用程序进行验证)
有关更多信息,请参阅
将Python 2代码移植到Python 3
要自动将Python 2代码转换为Python 3,请尝试2to3:
2to3-自动Python 2到3代码翻译
您可能还希望选择以下shebang系列:
#/usr/bin/env python
如果安装了多个版本的Python,/usr/bin/env
将确保使用的解释器是环境的$PATH
上的第一个解释器。另一种选择是硬编码,比如#/usr/bin/python
;没关系,但灵活性较低
/usr/bin/python
和/usr/local/bin/python
可能只是指向其他文件的链接,有人将它们设置为指向不同版本的python。Python 2和Python 3是不同的。例如,print“Content-Type:text/plain;charset=utf-8”
在Python 3中是一个语法错误。请看或只看谷歌“python 3中的新功能”,好的,非常感谢。当然,他们会链接到其他文件–他们必须这样做。好的,谢谢–但不会太多。如果提到缺少的括号,而不是仅仅写一般的“语法错误”,会更有帮助。