关键词:
【中文标题】如何在 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 中,默认的python3
是python3.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。
验证
在此之后,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)
当然你也可以使用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以... 查看详情