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

     2023-02-24     165

关键词:

【中文标题】如何在 Ubuntu 16.10 上为 Python 3.6 安装 pip?【英文标题】:How to install pip for Python 3.6 on Ubuntu 16.10? 【发布时间】:2017-07-28 11:25:38 【问题描述】:

我想首先指出这个问题可能看起来像重复,但事实并非如此。我在这里看到的所有问题都是关于 Python 3 的 pip 而我说的是 Python 3.6。那时使用的步骤不适用于 Python 3.6。

    我从official docker store 获得了清晰的 Ubuntu 16.10 映像。 运行apt-get update 运行apt-get install python3.6 运行apt-get install python3-pip 运行pip3 install requests bs4 运行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

【问题讨论】:

尝试下载并运行bootstrap.pypa.io/get-pip.py 【参考方案1】:

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

您可以通过检查pip3的shebang来验证这一点:

$ head -n1 $(which pip3)
#!/usr/bin/python3

幸运的是,python3-pip 包安装的 pip 被安装到“共享”/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

【讨论】:

@Anthony Sottile,关于如何使 python 3.6 默认的任何建议? 使 python3.6 成为 pip 的默认值的一种方法是创建一个名为“pip”但本质上执行exec python3.6 -m pip 的可执行文件——将其放入~/bin/usr/local/bin。不建议更换操作系统默认的python3可执行文件,会导致操作系统不稳定。 “没有名为 pip 的模块”当我尝试这个时。 @TurtlesAreCute 你是否安装了python-pip(通过apt)? @TurtlesAreCute 来自测试,这可能意味着您(在某些时候)运行sudo pip install pip --upgrade,这会将 pip 移动到 py35 dist-packages。您可能可以使用 sudo apt install --reinstall python-pip 找回旧的,或者按照上面 cmets 中的建议将 get-pip.py 与 python3.6 一起使用【参考方案2】:

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

【讨论】:

我认为应该是sudo ln -s /usr/local/bin/pip3.6 /usr/local/bin/pip3,因为pip3默认是系统默认安装的pip3.x。 在我提供的示例中,pip 通过sudo python3.6 get-pip.py 安装为/usr/local/bin/pip,别名为/usr/local/bin/pip3。系统上没有/usr/local/bin/pip3.6 哦,好的。我现在明白了。创建了一个 Ubuntu Server 17.04 用于测试和开箱即用,它仅与 Python 3.5.x 一起提供,与 Python 2.x 无关,也没有安装 pip。在apt install python3.6 / -dev / -env 之后,我得到了 Python 3.6.x,但python3 符号链接继续按预期指向默认的 Python 3.5.x。然后一个简单的sudo ln -s /usr/bin/python3.6 /usr/local/bin/python 处理它。然后 wget get-pip.py 并使用python(符号链接后的Python 3.6.x)运行,就完成了。现在将你的答案标记为正确的答案,因为它感觉比旧的更干净。 fwiw,pep 0394 不建议以下内容:sudo ln -s /usr/bin/python3.6 /usr/local/bin/python PEP 394 说“更通用的python 命令应该在安装任何版本的Python 2 时安装,并且应该调用与python2 命令相同的Python 版本”。在 Ubuntu 16 上将 python3.6 链接到 python 可能很危险。【参考方案3】:

此答案假定您已安装 python3.6。对于python3.7,将3.6 替换为3.7。对于python3.8,将3.6 替换为3.8,但它也可能首先需要python3.8-distutils 包。

使用 sudo 安装

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

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

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

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

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

不用 sudo 安装

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

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

警告:脚本轮安装在“/home/ubuntu/.local/bin”中 这不在PATH上。考虑将此目录添加到 PATH 或者,如果 您更喜欢禁止显示此警告,请使用 --no-warn-script-location。

验证

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

【讨论】:

这是在 Ubuntu 16.04 上对我有用的唯一答案。谢谢【参考方案4】:

该网站包含一个更清洁的解决方案,它也使 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运行

sudo update-alternatives --config python3

并选择“2”。那么

$ 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 上测试。

【讨论】:

请注意。目前,python 3.6 中的 pip 尚未提供 python 包“apt_pkg”,这意味着某些命令(例如“apt-add-repository”)可能不起作用。 在 Ubuntu 上,Python 3 与操作系统紧密集成,因此不同版本不是替代品,您不应更改符号链接 /usr/bin/python3。所以这很容易引起问题。例如。 your terminal might not open.

如何在 Ubuntu 上为 Apache2 配置子域?

】如何在Ubuntu上为Apache2配置子域?【英文标题】:HowtoconfiguresubdomainsforApache2onUbuntu?【发布时间】:2011-10-1318:48:25【问题描述】:我关注了这些instructionstoconfiguresubdomainsforapache。我可以使用http://localhost/test访问子域,尽管我无法... 查看详情

如何在 Ubuntu 20.04 上为 Python 3.9 安装 pip

】如何在Ubuntu20.04上为Python3.9安装pip【英文标题】:HowtoinstallpipforPython3.9onUbuntu20.04【发布时间】:2021-04-1502:13:16【问题描述】:Ubuntu20.04附带Python3.8。我无法卸载Python3.8,但我需要Python3.9我继续安装Python3.9:sudoadd-apt-repositoryppa:de... 查看详情

如何在 ubuntu 上为 django restful 服务配置 apache2

】如何在ubuntu上为djangorestful服务配置apache2【英文标题】:Howtoconfigureapache2onubuntufordjangorestfulservices【发布时间】:2016-06-2100:41:56【问题描述】:我的ubuntu服务器上有djangorestful服务,这些服务在端口84上运行。发送请求时,它来... 查看详情

如何从ubuntu16.10升级到ubuntu17.04

先决条件:在执行Ubuntu升级之前,您应该做几件事情,例如备份重要的文件和文件夹,禁用或清除第三方PPA(升级过程将禁用这些)并安装所有可用的更新。最后一步很重要,所以请确保您在开始之前已经完全保持最新状态,终... 查看详情

如何在 Ubuntu 网络服务器上为 Dart 安装 pub(命令行使用)

】如何在Ubuntu网络服务器上为Dart安装pub(命令行使用)【英文标题】:Howtoinstallpub(commandlineusage)forDartonUbuntuweb-server【发布时间】:2015-04-1213:24:38【问题描述】:我已按照说明here(在Linux选项卡下)将Dart安装到Ubuntu网络服务器上... 查看详情

如何在 Ubuntu + Apache2.4 + mod_wsgi 上为 Ansible 配置 ARA?

】如何在Ubuntu+Apache2.4+mod_wsgi上为Ansible配置ARA?【英文标题】:HowtoconfigureARAforAnsibleonUbuntu+Apache2.4+mod_wsgi?【发布时间】:2018-08-2002:17:57【问题描述】:我正在尝试在Ubuntu16.04上安装ARA(https://github.com/openstack/ara)以监控我的Ansibleplayb... 查看详情

在 Ubuntu 上为 WebRTC 安装 TURN 服务器

...UbuntuforWebRTC【发布时间】:2014-10-2203:45:08【问题描述】:如何在我的ubuntu12.04上安装TURN服务器?可以分享教程吗?我阅读了本教程:ImplementingourownSTUN/TURNserverforWebRTCApplication。但我不明白如何在我的ubuntu12.04 查看详情

如何在 Ubuntu on Windows (WSL) 上为我的 VS Code 终端使用 Bash?

】如何在UbuntuonWindows(WSL)上为我的VSCode终端使用Bash?【英文标题】:HowdoIuseBashonUbuntuonWindows(WSL)formyVSCodeterminal?【发布时间】:2017-11-1100:35:20【问题描述】:虽然其他问题涉及howtousethingslikegit-bash,但将新的WSL作为VSCode的终端进行... 查看详情

如何在 wsl2 上为不同的发行版设置不同的 ip?

】如何在wsl2上为不同的发行版设置不同的ip?【英文标题】:HowcanIhavedifferentipfordifferntdistrubutionsonwsl2?【发布时间】:2021-02-1403:57:16【问题描述】:我在wsl2上运行5个不同的Ubuntu发行版,但都具有相同的IP地址。例如,Ubuntu18.04和U... 查看详情

vps上ubuntu16.10系统如何安装图形界面

参考技术A工具/原料Ubuntu系统xrdpXFCE桌面环境方法/步骤1.首先我们要先升级一下软件源给安装桌面环境做准备。执行命令:apt-getupdate2.安装桌面环境或窗口管理器:apt-getinstallxubuntu-desktop这将为Ubuntu安装XFCE桌面环境。3.下面接着来... 查看详情

喜讯!ubuntu16.10(yakketyyak)finalbeta发布喽!!!

上月三十日,代号为“YakketyYak”的Ubuntu16.10发行版本的FinalBeta正式上线。Canonical的开发者SteveLangasek说道:“16.10继续秉承Ubuntu自豪传统--在最高质量易用性的Linux发行版本中整合最新和最优秀的开源技术。在这个开发周... 查看详情

在 ubuntu 上为 python 3.5 扭曲

】在ubuntu上为python3.5扭曲【英文标题】:twistedforpython3.5onubuntu【发布时间】:2017-12-1408:18:59【问题描述】:我尝试在我的虚拟环境中安装django频道。但它失败了。它给出了以下错误“twisted的构建轮失败”。这是怎么回事。?我... 查看详情

如何在本地机器上为 linux 发布二进制 Python ***

】如何在本地机器上为linux发布二进制Python***【英文标题】:HowtopublishbinaryPythonwheelsforlinuxonalocalmachine【发布时间】:2018-11-1409:01:30【问题描述】:我有一个包含C扩展的包,我想上传到pypi:https://github.com/Erotemic/netharn我在Ubuntu18.0... 查看详情

在 ubuntu 上为代客安装 nginx

】在ubuntu上为代客安装nginx【英文标题】:installnginxforvaletonubuntu【发布时间】:2018-10-2102:58:19【问题描述】:我正在尝试在Ubuntu17.10上安装valet,但我遇到了请求的nginx包的问题。它给了我这个错误:See"systemctlstatusnginx.service"and"jo... 查看详情

在 Ubuntu 上为 Android 编译 dlib

】在Ubuntu上为Android编译dlib【英文标题】:CompiledlibforAndroidonUbuntu【发布时间】:2020-12-1120:40:24【问题描述】:我正在尝试为Android编译dlib。我的SO是Ubuntu20.04。我从https://github.com/tzutalin/dlib-android开始学习本教程我下载了Android-NDK... 查看详情

如何使用 apt-get 在 Ubuntu 18.04/17.04/16.10/16.04 LTS/15.10/15.04/14.10/14.04 LTS/13.10/13.04 上安装 Maven

】如何使用apt-get在Ubuntu18.04/17.04/16.10/16.04LTS/15.10/15.04/14.10/14.04LTS/13.10/13.04上安装Maven3?[关闭]【英文标题】:HowtoinstallMaven3onUbuntu18.04/17.04/16.10/16.04LTS/15.10/15.04/14.10/14.04LTS/13.10/13.04byusingapt-get?[closed]【 查看详情

在 Ubuntu 上为 Ruby on Rails 安装 PostgreSQL

】在Ubuntu上为RubyonRails安装PostgreSQL【英文标题】:InstallingPostgreSQLonUbuntuforRubyonRails【发布时间】:2012-06-2100:15:24【问题描述】:我目前在Ubuntu12.04中通过RVM安装了RubyonRails。默认数据库是在SQLite3中设置的,但我想切换到PostgreSQL以... 查看详情

sh在ubuntu上为每种语言启用快捷方式(代码片段)

查看详情