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

JCh*_*ris 50 python3 software-installation 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 <module>
     import requests
 ModuleNotFoundError: No module named 'requests'
Run Code Online (Sandbox Code Playgroud)

我在机器中的 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
Run Code Online (Sandbox Code Playgroud)

Asc*_*ius 56

此答案假定您已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
Run Code Online (Sandbox Code Playgroud)

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

目录“/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
Run Code Online (Sandbox Code Playgroud)

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

警告:脚本轮安装在不在 PATH 上的“/home/ubuntu/.local/bin”中。考虑将此目录添加到 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)
Run Code Online (Sandbox Code Playgroud)

当然,您也可以选择使用python3.6 -m pip

$ python3.6 -m pip -V
pip 18.0 from /usr/local/lib/python3.6/dist-packages (python 3.6)
Run Code Online (Sandbox Code Playgroud)

  • 该脚本似乎假定 `python3.6` 具有可用的 setup-tools/easy install。出于这个原因,它对我不起作用。我最终使用了 `curl https://bootstrap.pypa.io/ez_setup.py -o - | python3.6 &amp;&amp; python3.6 -m easy_install pip` (6认同)

JCh*_*ris 19

我在 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)
Run Code Online (Sandbox Code Playgroud)

然后,运行以下命令(这在 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
Run Code Online (Sandbox Code Playgroud)

完成上述所有操作后,以下每个 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
Run Code Online (Sandbox Code Playgroud)