1.在我安装Python3.8.0之前fedora自带了Python2.7
软连接/usr/bin/python指向python2,所以,输入python2后运行Python2.7.14
终端输入pip install requests报错
由图片可以看到,requests库安装在了python2.7的site-packages里,也就是说pip install调用的是是python2.7版本,我现在想要将requests库安装在python3.8里
python3 -m pip install requests报错
[air@localhost bin]$ python3 -m pip install requests报错
由报错的最后一行,WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.可以看出没有获得SSL证书认证,所以要加上–trusted-host pypi.douban.com来获得SSL证书认证
[air@localhost bin]$ pip3 install requests -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com,因为pip install requests用的是默认的pip源,网速会很慢,所以这里选择使用国内的pip源,也有报错
Consider using the --user
option or check the permissions.由此段可以考虑选择在root权限下运行代码
在python3.8下import requests成功运行,所以requests库成功安装在了python3.8.0下
pip只是一个工具,如果你的电脑上不仅安装了python3.8.0,还安装了python3.7.4,这两个版本都有与之对应的pip,但同一个pip可以给这两个版本安装插件,也就是说只要规定了python包安装路径,想要给任意版本的python安装插件,用同一个pip就能实现,如下
[root@localhost bin]# pip3.7 install requests --target=/opt/python-3.7.4/Python-3.7.4/Lib/site-packages -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
虽然下载了,但安装的位置错了
其中**–target=指定安装目录**有问题,那就是指定的安装目录没有正确
实际上Python-3.8.0.tgz解压之后是文件夹Python-3.8.0,这个文件下的Lib目录下也有一个site-packages,但是这个site-packages并不在安装第三方模块的路径之中
当cd Python-3.8.0,然后执行./configure --prefix=/opt/python-3.7.4/lib之后lib目录之中按路径/lib/python3.7目录里也会有一个site-packages包,第三方模块应该安装在这里
所以正确的安装路径是
[root@localhost bin]# pip3.7 install requests --target=/opt/python-3.7.4/lib/lib/python3.7/site-packages -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
如果指定安装目录错误,就会出现import库失败,No module named '库’的问题,当然,你也可以让这个错误的路径生效,即不按照标准模式安装库,方法就是:终端登陆python,然后import sys,再输入sys.path可以看到一连串路径,当python导入模块的时候,就会按照这些路径寻找第三方库, >>>sys.path.append(’/opt/python-3.7.4/Python-3.7.4/Lib/site-packages’),就能使原来无法import库的路径生效
同理:beautifulsoup4库的安装代码是
sudo pip3 install beautifulsoup4 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
注意也要在root权限下运行
用pip3 list查看python3安装了哪些库,pip list指的是python2安装的库
r=requests.get(url)报错如下,显示没有ssl模块
import ssl之后发现确实会报错
解决的方法是重新编译安装python3.8.0,到Python3.8.0的安装目录下,输入
[air@localhost 下载]$ cd Python-3.8.0/
[air@localhost Python-3.8.0]$ ./configure --with-ssl
然后
编译和安装
make&&make install