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

JCh*_*ris 48 ubuntu install pip python-3.x

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

  1. 我从官方码头商店得到了一张清晰的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)

Mil*_*son 90

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

  • fwiw,[pep 0394](https://www.python.org/dev/peps/pep-0394/)不建议如下:`sudo ln -s /usr/bin/python3.6/usr/local /斌/ python` (5认同)
  • [PEP 394](https://www.python.org/dev/peps/pep-0394/#recommendation)说"无论何时安装任何版本的Python 2,都应该安装更通用的`python`命令,并且应该调用与`python2`命令相同的Python版本.在Ubuntu 16上将`python3.6`链接到`python`可能很危险. (5认同)
  • 我认为它应该是`sudo ln -s /usr/local/bin/pip3.6/usr/local/bin/pip3`,因为`pip3`默认为系统上安装的默认pip3.x. (3认同)

Ant*_*ile 33

至少在ubuntu 16.10中,默认python3python3.5.因此,所有的python3-X软件包都将安装python3.5而不是python3.6.

您可以通过检查以下内容来验证这一点pip3:

$ head -n1 $(which pip3)
#!/usr/bin/python3
Run Code Online (Sandbox Code Playgroud)

幸运的是,由python3-pip软件包安装的pip安装在"shared"中,/usr/lib/python3/dist-packages这样python3.6也可以利用它.

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

python3.6 -m pip install ...
Run Code Online (Sandbox Code Playgroud)

例如:

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

  • “没有名为 pip 的模块”当我尝试这个时。 (2认同)

Acu*_*nus 11

这个答案假定您已python3.6安装.对于python3.7,只需替换3.63.7.

安装

关于安装python3.8,使用3.6(而不是3.8)避免将文件写入磁盘.

curl https://bootstrap.pypa.io/get-pip.py | sudo -H python3.6
Run Code Online (Sandbox Code Playgroud)

如果您希望避免使用python3.8-distutils,请参阅链接文档以使用该pip标志在本地进行安装.

-H标志

curl显然需要该标志wget,以便在为更新的python解释器安装pip时防止这些错误:

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

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

验证

在此之后,-H,sudo,并且pip都可以有望指向同一个目标:

curl https://bootstrap.pypa.io/get-pip.py | python3.6 - --user
Run Code Online (Sandbox Code Playgroud)

当然你也可以使用pip3.

$ (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)