在处理一个项目时,我将 Ubuntu 20.04 默认 Python 3 版本更改为 Python 3.10,具体操作如下:
- 在 bashrc 中,添加
alias python3 = python3.10
并获取它 ln -sf python3.10 python3
意思是“python3 命令意味着 python3.10”
我知道我搞砸了,并回滚了这些
- 从 bash 和 source 中删除第一行
- 在 2 中运行相同的命令,但用 3.8 替换 3.10
但是,现在每当我执行任何 pip 或 pip3 安装时,我都会得到这个
build-system@buildsystem-H310M-H-2-0:~$ pip3 install pyserial
Collecting pyserial
Using cached pyserial-3.5-py2.py3-none-any.whl (90 kB)
Installing collected packages: pyserial
Successfully installed pyserial-3.5
ERROR: Exception:
Traceback (most recent call last):
File "/home/build-system/.local/lib/python3.10/site-packages/pip/_internal/cli/base_command.py", line 160, in exc_logging_wrapper
status = run_func(*args)
File "/home/build-system/.local/lib/python3.10/site-packages/pip/_internal/cli/req_command.py", line 247, in wrapper
return func(self, options, args)
File "/home/build-system/.local/lib/python3.10/site-packages/pip/_internal/commands/install.py", line 553, in run
self._handle_target_dir(
File "/home/build-system/.local/lib/python3.10/site-packages/pip/_internal/commands/install.py", line 563, in _handle_target_dir
ensure_dir(target_dir)
File "/home/build-system/.local/lib/python3.10/site-packages/pip/_internal/utils/misc.py", line 105, in ensure_dir
os.makedirs(path)
File "/usr/lib/python3.10/os.py", line 215, in makedirs
makedirs(head, exist_ok=exist_ok)
File "/usr/lib/python3.10/os.py", line 215, in makedirs
makedirs(head, exist_ok=exist_ok)
File "/usr/lib/python3.10/os.py", line 215, in makedirs
makedirs(head, exist_ok=exist_ok)
[Previous line repeated 4 more times]
File "/usr/lib/python3.10/os.py", line 225, in makedirs
mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/Users'
每当我输入命令来检查当前版本时,例如
python3 -V
which python
我得到了 3.8.10。这是 Ubuntu 20.04 的默认版本吗?
请告诉我为什么尽管从 3.10 回滚到 3.8(默认)仍然会发生这种情况,我需要做什么才能解决这个问题?
答案1
这里的主要问题是,我不知怎么地在 config.h 文件中设置了一条从 /Users 开始的路径,该文件的作用是设置指向新安装的软件包所在位置的路径。我将路径更改为 '/usr/lib/Python3.8',这是理所当然的,因为 '/Users' 是为 MacOS 用户准备的,而不是 Debian。
所以,这是由于路径设置错误导致的问题。