如何在Ubuntu 16.10上安装Python 3.6的pip?

我想首先指出这个问题可能看似重复,但事实并非如此。 我在Ask Ubuntu上看到的所有问题都是关于Python 3的pip,我在谈论Python 3.6。 当时使用的步骤不适用于Python 3.6。

  1. 我从官方docker商店得到了一张清晰的Ubuntu 16.10图像。
  2. 运行apt-get update
  3. 运行apt-get install python3.6
  4. 运行apt-get install python3-pip
  5. 运行pip3 install requests bs4
  6. 运行python3.6 script.py

得到下面的ModuleNotFoundError

  Traceback (most recent call last): File "script.py", line 6, in  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 

这个答案假设你安装了python3.6 。 对于python3.7 ,只需用3.7替换3.6

安装

关于安装pip ,使用curl (而不是wget )可以避免将文件写入磁盘。

 curl https://bootstrap.pypa.io/get-pip.py | sudo -H python3.6 

如果您希望避免使用sudo ,请参阅链接文档以使用--user标志在本地安装pip

-H标志

使用sudo显然需要-H标志,以便在为更新的python解释器安装pip时防止出现以下错误:

目录“/home/someuser/.cache/pip/http”或其父目录不归当前用户所有,并且已禁用缓存。 请检查该目录的权限和所有者。 如果用sudo执行pip,你可能需要sudo的-H标志。

目录“/home/someuser/.cache/pip”或其父目录不归当前用户所有,并且已禁用缓存轮。 检查该目录的权限和所有者。 如果用sudo执行pip,你可能需要sudo的-H标志。

validation

在此之后, pippip3pip3.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) 

我在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 

目录“/home/doc/.cache/pip/http”或其父目录不归用户所有,并且已禁用缓存。 请检查该目录的权限和所有者。 如果用sudo执行pip,你可能需要sudo的-H标志。

解决

 chown root:doc /home/doc/.cache/pip/http 

如果实施很难解释,那是个坏主意。