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

时间:2017-03-08 02:54:07

标签: python-3.x ubuntu pip install

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

  1. 我从official docker store获得了一张清晰的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
  7. 下面有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
    

4 个答案:

答案 0 :(得分:86)

假设您有一个运行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

答案 1 :(得分:30)

至少在ubuntu 16.10中,默认python3python3.5。因此,所有python3-X包都将安装用于python3.5而不安装用于python3.6。

您可以通过查看pip3

的shebang来验证这一点
$ head -n1 $(which pip3)
#!/usr/bin/python3

幸运的是,python3-pip软件包安装的pip已安装到&#34; shared&#34; /usr/lib/python3/dist-packages使得python3.6也可以利用它。

您可以通过执行以下操作来安装python3.6的软件包:

python3.6 -m pip install ...

例如:

$ python3.6 -m pip install requests
$ python3.6 -c 'import requests; print(requests.__file__)'
/usr/local/lib/python3.6/dist-packages/requests/__init__.py

答案 2 :(得分:10)

此答案假定您已安装python3.6。对于python3.7,只需将3.6替换为3.7

安装

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

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

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

-H flag

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

  

目录&#39; /home/someuser/.cache/pip/http'或其父目录   不属于当前用户,并且已禁用缓存。   请检查该目录的权限和所有者。如果执行   点到sudo,你可能想要sudo&#39; -H flag。

     

目录   &#39; /home/someuser/.cache/pip'或其父目录不归   当前用户和缓存轮已被禁用。检查   权限和该目录的所有者。如果用sudo执行pip,   你可能想要sudo&#39; -H flag。

验证

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

答案 3 :(得分:3)

这个网站包含一个更清洁的解决方案,它使得pip完好无损,并且可以轻松地在3.5和3.6之间切换,然后每当3.7发布时。

http://ubuntuhandbook.org/index.php/2017/07/install-python-3-6-1-in-ubuntu-16-04-lts/

简短摘要:

sudo apt-get install python python-pip python3 python3-pip
sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install python3.6
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2

然后

$ pip -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
$ pip3 -V
pip 8.1.1 from /usr/local/lib/python3.5/dist-packages (python 3.5)

然后选择python 3.6 run

sudo update-alternatives --config python3

并选择&#39; 2&#39;。然后

$ pip3 -V
pip 8.1.1 from /usr/local/lib/python3.6/dist-packages (python 3.6)

要更新pip,请选择所需的版本和

pip3 install --upgrade pip

$ pip3 -V
pip 9.0.1 from /usr/local/lib/python3.6/dist-packages (python 3.6)

在Ubuntu 16.04上测试。