Ubuntu 16.04编译安装Python3.6所需依赖库及安装细节

引言:

在使用Python3.6的时候遇到了很多坑,而且很多都是编译安装时留下的坑,而这些坑需要重新编译安装python才能够解决,令人头疼。这里做一些总结,方便自己的同时也希望对他人有所帮助。


依赖库:

  1. 编译安装过程需要的库。
sudo apt-get install gcc make zlib1g-dev
  1. bz2支持库
sudo apt-get install libbz2-dev

bz2支持库,若在编译安装python前没有安装,将无法通过 pip install 安装提供bz2格式的第三方库,会出现unsupported archive format: .tar.bz2的错误,例如爬虫库Scrapy依赖的Twisted。

  1. sqlite3支持库
sudo apt-get install libsqlite3-dev

sqlite3支持库,若在编译安装python前没有安装,则python中会缺失sqlite3模块,当引入sqlite3或使用依赖sqllite3的第三方库(例如Scrapy)时,会出现ImportError: No modul named _sqllite3的错误。

  1. 其他:安装第三方库需要的库
sudo apt-get install python3-dev libxml2-dev libffi-dev libssl-dev libxslt1-dev

安装:

  • 通过wget获取压缩包,这里选择3.6.1版
wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
  • 解压获取到的压缩包
tar xJf Python-3.6.1.tar.xz
  • 进入解压生成的目录
cd Python-3.6.1
  • 配置
./configure
  • 编译
make
  • 安装
sudo -H make install

TODO: 这里可以使用 sudo checkinstall 代替 sudo make install

编译安装可能遇到的深坑:

  1. make install 无法安装: 提示 permission denied
    权限不足,使用 sudo make install
  2. 编译安装通过,但是在创建虚拟环境时出错:
Error: Command '['path_to_venv/python3.6', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.

编译安装前没有某些库,导致pip和setuptools没有在编译安装时随Python一起安装

为了搞定这个问题,也是一把辛酸泪

  1. 尝试手动安装pip,
    • 先根据官网pypi的pip安装说明,get-pip.py方式安装,出现decompress error,提示缺少zlib包,又去安装zlib包,依然出错,google上说需要安装zlib后重新编译。。。(我的本意就是不想重新编译啊~~魂淡),又回到了原点。
    • 依然不放弃,试着从pypi下载pip的zip压缩包,解压后, /usr/local/bin/python3.6 setup.py install, 出错。。。提示需要setuptools依赖,又去pypi下载setuptools的zip压缩包,解压,安装,提示ImportError需要另一个依赖(具体哪个依赖,好像当时头有点蒙,没太记住),感觉自己越陷越深!
    • 灵机一动,从系统自带的Python3.5的site-package里复制pip和setuptools,再次创建虚拟环境,出现同样错误

于是默默打开了duckduckgo.com:
how to build python3.6 from source in Ubuntu16.04

你可能感兴趣的:(Ubuntu 16.04编译安装Python3.6所需依赖库及安装细节)