之前一直是用python2.7做开发的,近期想将工作迁移到python3上去,毕竟还是要拥抱变化的,python3大势所趋。
我在阿里云的主机安装的系统是ubuntu 16.04,上面的python3版本默认为python3.5。但有不少用起来相当爽的特性是python3.6才支持的,就打算将python3.5换成3.6。在成功安装python3.6后,准备安装scrapy时,又是一大波坑袭来。
找资料,踩坑,再找资料,再踩坑……最后总结过程如下:
转载请注明出处:https://blog.csdn.net/aaronjny/article/details/83658681
1.在阿里云主机上安装python3.6
添加软件源:
sudo add-apt-repository ppa:jonathonf/python-3.6
更新源
sudo apt-get update
安装python3.6
sudo apt-get install python3.6
在终端里输入python3.6
,看是否成功安装:
root@spider-1:~# python3.6
Python 3.6.7 (default, Oct 25 2018, 09:16:13)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
成功进入,安装成功了。但是这个时候,python3
还是指向原来的python3.5的,我们需要进行修改:
sudo rm -rf /usr/bin/python3
sudo ln -s /usr/bin/python3.6 /usr/bin/python3
然后,我们输入python3
,就可以正常进入3.6环境了。
root@spider-1:~# python3
Python 3.6.7 (default, Oct 25 2018, 09:16:13)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
2.安装pip3并进行更新
如果机器上没有安装pip3的话,就先进行安装:
sudo apt-get install python3-pip
安装成功后,pip3版本应该是8.1.1
的,可以通过输入pip3 --version
来查看。
使用pip3安装第三方包时,能够看到pip的升级提示——你的pip版本太老咯,快升级一下吧!
You are using pip version 8.1.1, however version 18.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
另外,在安装scrapy的依赖cryptography时,安装失败了,怀疑是pip版本的问题。
行吧,我们输入pip install --upgrade pip
升级一下:
Collecting pip
Using cached pip-18.1-py2.py3-none-any.whl
Installing collected packages: pip
Successfully installed pip-8.1.1
You are using pip version 8.1.1, however version 18.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
excuse me???
我不是已经升级了吗??
为什么还是8.1.1??
我还不信邪的又试了几遍,都是一样的结果。好吧,没办法了,搜搜看吧。最后找到了解决方案(参考的文档都会在博文末尾放上对应名称及链接,想看的话可以直接翻到结尾):
先使wget下载安装脚本:
wget https://bootstrap.pypa.io/get-pip.py
然后进行安装:
sudo python get-pip.py
安装完成后,再看一下版本:
root@spider-1:~# pip3 --version
pip 18.1 from /usr/local/lib/python3.6/dist-packages/pip (python 3.6)
ok,安装成功了。
尝试再次使用pip3安装cryptography,没有出现问题,成功安装。
3.安装python3.6-dev
这个时候去安装scrapy,还是会失败。twisted
这个依赖无法正常安装。
查了很多资料,包括官方文档,都说先安装python3-dev
后,twisted
就可以正常安装了。然而,并没有什么卵用,我试了很多次依然不行。
没办法了,接着搜吧。最终发现:
使用python3-dev
安装的是3.5版本,而我们需要安装3.6版本的。
好吧,装装看吧:
sudo apt-get install python3.6-dev
安装成功后,在安装scrapy或twisted就都没问题了。
4.总结
总的来说,不管上面乱七八糟的,如果你想在阿里云ubuntu 16.04主机上安装python3.6和scrapy的话,需要做这几件事:
- 安装python3.6并替换快捷方式
- 安装pip3并将它升到最新版本
- 安装python3.6-dev
- 直接安装scrapy即可,它的依赖将被自动安装(不需要手动去装twisted和cryptography等依赖)
好了,一大堆坑,踩坑完毕!