Python 3.6.5(Mac)下__init__方法SyntaxError错误求助
兄弟,我一眼就瞅出问题根源了——这是Python版本不兼容搞出来的语法错误!
先看你贴的报错信息:
Traceback (most recent call last):
File "/Users/User/Downloads/Bot/Python/launcher.py", line 2, in
from catcher import Poke
File "/Users/User/Downloads/Bot/Python/catcher.py", line 11
def init(self, config_path: str, *args, **kwargs):
^ SyntaxError: invalid syntax
报错行里的config_path: str是Python的类型注解语法,这玩意儿是Python 3.5及以上版本才支持的。你说你用的是Python3.6.5,但大概率是你实际运行代码时调用的是Mac默认的Python2.7!
为啥会出现这种情况?
Mac系统默认自带的python命令指向的是Python2.7,而你手动安装的Python3.6.5得用python3命令才能调用。要是你直接敲python launcher.py运行脚本,其实是用Python2.7在执行,它根本不认识类型注解,自然就报语法错误了。
解决办法一步到位:
先确认当前调用的Python版本:
打开终端输入:python --version如果显示的是
Python 2.7.x,那实锤就是版本问题了。再敲python3 --version,应该就能看到你安装的Python 3.6.5。用正确的版本运行代码:
把运行命令改成:python3 /Users/User/Downloads/Bot/Python/launcher.py额外偷懒技巧:如果不想每次都敲
python3,整个虚拟环境就省心了:- 先创建虚拟环境:
python3 -m venv /Users/User/Downloads/Bot/Python/venv - 激活虚拟环境:
source /Users/User/Downloads/Bot/Python/venv/bin/activate
激活之后,直接敲
python就会指向3.6.5版本,再运行你的脚本就行。- 先创建虚拟环境:
另外,要是你的脚本开头加了#!/usr/bin/env python3这行,记得给脚本加执行权限(chmod +x launcher.py),这样直接双击或者敲./launcher.py也能自动用Python3执行。
内容的提问来源于stack exchange,提问作者Cedric Wong

