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


40

首先,我想指出这个问题似乎是重复的,但事实并非如此。我在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 <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

Answers:


43

该答案假定您已python3.6安装。对于python3.7,替换3.63.7。对于python3.8,请替换3.63.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

有时可能会发出警告,例如:

警告:脚本滚轮安装在PATH之外的'/home/ubuntu/.local/bin'中。考虑将这个目录添加到PATH,或者,如果您不想显示此警告,请使用--no-warn-script-location。

验证

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

5
该脚本似乎假定python3.6安装工具可以正常工作/易于安装。因此,它对我不起作用。我最终使用了curl https://bootstrap.pypa.io/ez_setup.py -o - | python3.6 && python3.6 -m easy_install pip
FirefoxMetzger

我安装python3.6python3.6-devppa:jonathonf/python-3.6一个Ubuntu的14.04。我不确定是否只是忘记了setuptools或它是否坏了,但当时不起作用。
FirefoxMetzger

它不会以任何方式伪造您的答案=)这只是万一有人遇到相同(希望很少见)的问题时的补充。
FirefoxMetzger

@ABB如果我想pip -Vpython 2.7pip3 -V && pip3.6 -Vpython 3.6我该怎么办?
本雅明·贾法里

1
您也可以使用wget -O -将结果流式传输到stdout:wget -O - https://bootstrap.pypa.io/get-pip.py | sudo -H python3.6
ingomueller.net

16

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

1
“没有名为pip的模块”
乌龟很可爱

在运行命令之前,请尝试执行sudo apt get updatesudo apt get upgrade
JChris

谢谢您的帮助; 非常感激。在对此进行故障排除时,我使系统进入登录循环状态,看起来最简单的修复方法是重新格式化/重新安装。
乌龟很可爱
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.