Python 3.x 如何在Ubuntu 16.10上安装pip for Python 3.6?
我想首先指出,这个问题可能看起来像是重复的,但事实并非如此。我在这里看到的所有问题都是关于Python3的pip的,我现在谈论的是Python3.6。当时使用的步骤不适用于Python3.6Python 3.x 如何在Ubuntu 16.10上安装pip for Python 3.6?,python-3.x,ubuntu,pip,installation,Python 3.x,Ubuntu,Pip,Installation,我想首先指出,这个问题可能看起来像是重复的,但事实并非如此。我在这里看到的所有问题都是关于Python3的pip的,我现在谈论的是Python3.6。当时使用的步骤不适用于Python3.6 我得到了一个清晰的Ubuntu 16.10图像 运行apt get update 运行apt get install python3.6 运行apt get install python3 pip 运行pip3安装请求bs4 运行python3.6script.py 获得以下ModuleNotFoundEr
pip3安装请求bs4
python3.6script.py
ModuleNotFoundError
:
Traceback (most recent call last):
File "script.py", line 6, in <module>
import requests
ModuleNotFoundError: No module named 'requests'
至少在ubuntu 16.10中,默认的
python3
是python3.5
。因此,所有的python3-X
软件包都将针对python3.5而不是python3.6安装
您可以通过检查pip3的shebang来验证这一点:
$ head -n1 $(which pip3)
#!/usr/bin/python3
幸运的是,python3pip
包安装的pip被安装到“共享”的/usr/lib/python3/dist包中,这样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
假设您有一个运行Ubuntu16.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中,此操作是开箱即用的):
完成以上所有操作后,以下每个shell命令都应指示Python 3.6.1
(或Python 3.6的最新版本):
这个答案假设您已经安装了python3.6
。对于python3.7
,将3.6
替换为3.7
。对于python3.8
,将3.6
替换为3.8
,但也可能首先需要python3.8-distutils
包
使用sudo安装
关于,使用curl
(而不是wget
)可以避免将文件写入磁盘
curl https://bootstrap.pypa.io/get-pip.py | sudo -H python3.6
-H
标志对于sudo
显然是必要的,以防止在为更新的python解释器安装pip时出现以下错误:
目录'/home/someuser/.cache/pip/http'或其父目录
不属于当前用户,缓存已被禁用。
请检查该目录的权限和所有者。如果执行
与sudo一起pip,您可能需要sudo的-H标志
目录
“/home/someuser/.cache/pip”或其父目录不属于
已禁用当前用户和缓存控制盘。检查
该目录的权限和所有者。如果使用sudo执行pip,
你可能需要sudo的-H标志
无sudo安装
这有时可能会发出警告,例如:
警告:脚本控制盘安装在“/home/ubuntu/.local/bin”中
这不在正轨上。考虑将此目录添加到PATH或IF
如果希望抑制此警告,请使用--no warn脚本位置
验证
在此之后,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-mpip
$ python3.6 -m pip -V
pip 18.0 from /usr/local/lib/python3.6/dist-packages (python 3.6)
这个网站包含了一个更干净的解决方案,它使pip保持完整,人们可以很容易地在3.5和3.6之间切换,然后在3.7发布时切换
简短总结:
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
然后
然后选择Python3.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)
在Ubuntu16.04上测试。试着下载并运行@Anthony Sottile,对如何使python 3.6成为默认值有什么建议吗?使python3.6成为pip默认值的一种方法是创建一个名为“pip”的可执行文件,但实际上是执行python3.6-m pip
——将其放入~/bin
或/usr/local/bin
。不建议替换操作系统默认的python3
可执行文件,这会导致操作系统不稳定。我尝试此操作时,“没有名为pip的模块”。@Turtlesarete您是否安装了python pip
(通过apt
)?@Turtlesarete退出测试,这可能意味着您(在某个时候)运行了sudopip安装pip——升级
,这将把pip移到py35 dist包中。您可能可以使用sudo apt install重新安装python pip
或使用上面评论中建议的python3.6使用get pip.py
,我认为应该是sudo ln-s/usr/local/bin/pip3.6/usr/local/bin/pip3
,aspip3
默认为系统上安装的默认pip3.x。在我提供的示例中,pip通过sudo python3.6 get pip.py
安装为/usr/local/bin/pip
,别名为/usr/local/bin/pip3
。系统上没有/usr/local/bin/pip3.6
。哦,好的。我现在明白了。创建了一个用于测试的Ubuntu服务器17.04,它只附带Python3.5.x,与Python2.x无关,并且没有安装pip
。在apt安装python3.6/-dev/-env之后,我得到了python3.6.x,但是python3
symlink仍然像预期的那样指向默认的python3.5.x。然后一个简单的sudoln-s/usr/bin/python3.6/usr/local/bin/python
处理它。然后wget-pip.py并使用python
(符号链接后的python 3.6.x)运行,就完成了。现在将您的anwser标记为正确的anwser,因为它感觉比旧的.fwiw更干净,不建议使用以下内容:sudo ln-s/usr/bin/python3.6/usr/local/bin/python
“只要安装了任何版本的python 2,就应该安装更通用的python
命令,并且应该调用与python2
命令相同版本的python”。在Ubu上将python3.6
链接到python
可能会很危险
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)
sudo update-alternatives --config python3
$ pip3 -V
pip 8.1.1 from /usr/local/lib/python3.6/dist-packages (python 3.6)
pip3 install --upgrade pip
$ pip3 -V
pip 9.0.1 from /usr/local/lib/python3.6/dist-packages (python 3.6)