首先我想指出的是,这个问题看似重复,但其实不然。我在 Ask Ubuntu 上看到的所有问题都与 Python 3 的 pip 有关,而我说的是 Python 3.6。当时使用的步骤不适用于 Python 3.6。
- 我从官方 Docker 商店。
- 跑步
apt-get update
- 跑步
apt-get install python3.6
- 跑步
apt-get install python3-pip
- 跑步
pip3 install requests bs4
- 跑步
python3.6 script.py
得到ModuleNotFoundError
如下内容:
Traceback (most recent call last):
File "script.py", line 6, in <module>
import requests
ModuleNotFoundError: No module named 'requests'
我的机器中有 Python 和 pip:
python3
python3.5
python3.5m
python3.6
python3m
python3-config
python3.5-config
python3.5m-config
python3.6m
python3m-config
pip
pip3
pip3.5
答案1
此答案假设您已python3.6
安装。 对于python3.7
,请替换3.6
为3.7
。 对于python3.8
,请替换3.6
为3.8
,但可能还首先需要该python3.8-distutils
包。
使用 sudo 安装
关于安装pip
,使用curl
(而不是wget
)避免将文件写入磁盘。
curl https://bootstrap.pypa.io/get-pip.py | sudo -H python3.6
显然,为了防止在为更新的 Python 解释器安装 pip 时出现如下错误,该-H
标志是必要的:sudo
目录“/home/someuser/.cache/pip/http”或其父目录不属于当前用户,并且缓存已被禁用。请检查该目录的权限和所有者。如果使用 sudo 执行 pip,您可能需要 sudo 的 -H 标志。
目录“/home/someuser/.cache/pip”或其父目录不属于当前用户,并且缓存轮已被禁用。请检查该目录的权限和所有者。如果使用 sudo 执行 pip,您可能需要 sudo 的 -H 标志。
无需 sudo 即可安装
curl https://bootstrap.pypa.io/get-pip.py | python3.6 - --user
有时可能会发出警告,例如:
警告:脚本轮安装在 '/home/ubuntu/.local/bin' 中,该目录不在 PATH 中。请考虑将此目录添加到 PATH,或者,如果您希望隐藏此警告,请使用 --no-warn-script-location。
确认
此后,预计pip
、pip3
和pip3.6
都指向同一目标:
$ (pip -V && pip3 -V && pip3.6 -V) | uniq
pip 18.0 from /usr/local/lib/python3.6/dist-packages (python 3.6)
当然你python3.6 -m pip
也可以选择使用。
$ python3.6 -m pip -V
pip 18.0 from /usr/local/lib/python3.6/dist-packages (python 3.6)
答案2
我在 stackoverflow 上得到了答案。
来源:https://stackoverflow.com/a/44254088/1812319
假设您有一个运行 Ubuntu 16.04、16.10 或 17.04 的系统,并且您希望 Python 3.6 作为默认的 Python。
如果您使用的是 Ubuntu 16.04 LTS,则需要使用 PPA:
sudo add-apt-repository ppa:jonathonf/python-3.6 # (only for 16.04 LTS)
然后,运行以下命令(这在 16.10 和 17.04 上开箱即用):
sudo apt update sudo apt install python3.6 sudo apt install python3.6-dev sudo apt install python3.6-venv wget https://bootstrap.pypa.io/get-pip.py sudo python3.6 get-pip.py sudo ln -s /usr/bin/python3.6 /usr/local/bin/python3 sudo ln -s /usr/local/bin/pip /usr/local/bin/pip3 # Do this only if you want python3 to be the default Python # instead of python2 (may be dangerous, esp. before 2020): # sudo ln -s /usr/bin/python3.6 /usr/local/bin/python
完成以上所有操作后,以下每个 shell 命令都应指示
Python 3.6.1
(或较新版本的 Python 3.6):python --version # (this will reflect your choice, see above) python3 --version $(head -1 `which pip` | tail -c +3) --version $(head -1 `which pip3` | tail -c +3) --version