在Ubuntu 20.04 ARM版中切换Python版本的问题求助
问题描述
- 环境:Ubuntu 20.04 ARM版本,系统自带Python 3.8
- 已通过pyenv和apt-get安装Python 3.6,执行
python3 --version显示Python 3.6.0 - 运行测试命令时,程序仍调用
/usr/bin/python3(Python 3.8),出现语法错误:import pexpect /usr/local/lib/python3.8/dist-packages/pexpect/__init__.py:75: in <module> from .pty_spawn import spawn, spawnu /usr/local/lib/python3.8/dist-packages/pexpect/pty_spawn.py:14: in <module> from .spawnbase import SpawnBase E File "/usr/local/lib/python3.8/dist-packages/pexpect/spawnbase.py", line 224 E def expect(self, pattern, timeout=-1, searchwindowsize=-1, async=False): E ^ E SyntaxError: invalid syntax - 原因:自Python 3.7起,
async成为保留关键字,旧版本pexpect代码使用async作为参数名,在Python 3.8中触发语法错误
解决方案
设置pyenv的Python 3.6为默认版本
- 全局生效:执行
pyenv global 3.6.0 - 仅当前项目生效:执行
pyenv local 3.6.0 - 验证:执行
which python3,输出应为~/.pyenv/shims/python3(而非/usr/bin/python3)
- 全局生效:执行
确保Shell PATH配置正确
- 打开Shell配置文件(如
~/.bashrc或~/.zshrc),添加:export PATH="$HOME/.pyenv/shims:$PATH" - 重启Shell或执行
source ~/.bashrc(对应你的配置文件)使修改生效
- 打开Shell配置文件(如
为Python 3.6单独安装pexpect
- 执行
pip install pexpect,确保pip是pyenv下的版本(可通过which pip验证路径)
- 执行
临时指定Python版本运行程序
- 直接用Python 3.6的路径执行脚本:
python3.6 your_script.py或~/.pyenv/versions/3.6.0/bin/python your_script.py
- 直接用Python 3.6的路径执行脚本:
内容的提问来源于stack exchange,提问作者cybertextron
相关产品推荐
相关产品推荐

