基于WSL的python环境安装(Ubuntu+python3.6.12)

系统版本:VERSION="20.04.1 LTS (Focal Fossa)"

python版本:3.6.12

1. 更换国内镜像源

# 备份原来的sources.list文件
sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
# 写入新的镜像地址(清华镜像源)
sudo vim /etc/apt/sources.list

写入以下内容:

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse

# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse

更新镜像缓存:

sudo apt update

2. 安装oh-my-zsh

# 第一步 (确保你的系统中有 zsh、git、wget、curl)
sudo apt install zsh -y
# 第二步 (使用脚本进行安装,这里会自动修改默认shell)
sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"

安装zsh插件:

# zsh-autosuggestions插件
git clone https://github.com/zsh-users/zsh-autosuggestions.git $ZSH_CUSTOM/plugins/zsh-autosuggestions
# zsh-syntax-highlighting插件
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting

修改配置文件 vim ~/.zshrc,添加 zsh-autosuggestionszsh-syntax-highlighting

# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)

使配置文件生效:source ~/.zshrc

安装 Powerlevel10k主题:

暂时先不进行安装

# 使用gitee加速安装
git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

使用系统自带的ys主题:

# 将配置文件~/.zshrc修改为
ZSH_THEME="ys"

3. 安装python

# 官方镜像安装
sudo wget https://www.python.org/ftp/python/3.6.12/Python-3.6.12.tgz -O /opt/Python-3.6.12.tgz
# 阿里镜像加速
sudo wget http://npm.taobao.org/mirrors/python/3.6.12/Python-3.6.12.tgz -O /opt/Python-3.6.12.tgz
cd /opt
# 解压
sudo tar xvf Python-3.6.12.tgz
# 
cd Python-3.6.12

编译环境安装:

# GNU 编辑器集合,GNU 调试器,和其他编译软件所必需的开发库和工具
build-essential 

# OpenSSL的开发库(Secure Sockets Layer toolkit )
libssl-dev

# zlib是一个压缩解压缩库(compression library)
zlib1g-dev 

# libbz2是高品质块排序文件压缩程序库(high-quality block-sorting file compressor library)bzip2
libbz2-dev 

# GNU Readline 库提供了一组函数供应用程序使用,这些函数允许用户在键入命令行时编辑命令行。(GNU readline and history libraries)
libreadline-dev 

# LLVM 项目是模块化和可重用的编译器和工具链技术的集合。
llvm 

# GNU Ncurses 是一个编程库,它允许用户编写基于文本的用户界面(TUI)。
libncurses5-dev
# 用于终端处理的共享库(宽字符支持)
libncursesw5-dev 

# Tk 是 Tcl“图形工具箱”的扩展,它提供各种标准的 GUI 接口项,以利于迅速进行高级应用程序开发。(Toolkit for Tcl and X11 (default version) )
tk-dev 

# libffi的作用就相当于编译器,它为多种调用规则提供了一系列高级语言编程接口,然后通过相应接口完成函数调用,底层会根据对应的规则,完成数据准备,生成相应的汇编指令代码。(Foreign Function Interface library)
libffi-dev 

# xz(XZ-format compression library)
liblzma-dev

# xml处理(XSLT 1.0 processing library)
libxslt1-dev

# sqlite3支持库
libsqlite3-dev

# (cross-platform, open-source make system)
cmake

# xml解析 虚包 (XML parsing C library)
libexpat-dev

# (GNU dbm database routines)
libgdbm-dev
sudo apt install build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev llvm libncurses5-dev libncursesw5-dev tk-dev libffi-dev liblzma-dev libxslt1-dev libsqlite3-dev cmake libgdbm-dev -y

预编译python源代码

sudo ./configure --prefix=/opt/python3 --enable-optimizations --with-ensurepip=install --enable-loadable-sqlite-extensions

configure的作用是利用这个configure的脚本来查看你的linux的运行环境。然后生成一个Makefile文件,你就可以通过makefile文件编译你的项目了

编译源代码

sudo make -j `grep processor /proc/cpuinfo  | wc -l`

grep processor /proc/cpuinfo | wc -l得到的是CPU的虚拟核心数(线程数)

make实际就是编译源代码,按照上一步生成makefile文件进行编译,并生成执行文件。

进行安装

sudo make install

make install实际上是把生成的执行文件拷贝到之前configure命令指定的目录/opt/python3下。

添加软链接

sudo ln -s /opt/python3/bin/python3.6 /usr/bin/python
sudo ln -s /opt/python3/bin/pip3 /usr/bin/pip

验证安装

# jesse @ DESKTOP-TI6T145 in ~ [13:36:50]
$ python --version
Python 3.6.12

# jesse @ DESKTOP-TI6T145 in ~ [13:37:00]
$ pip --version
pip 18.1 from /opt/python3/lib/python3.6/site-packages/pip (python 3.6)

# jesse @ DESKTOP-TI6T145 in ~ [13:37:06]
$ python
Python 3.6.12 (default, Nov  7 2020, 05:36:26)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import dbm
>>> from dbm import gnu
>>> import ssl
>>> import lzma
>>> import sqlite3

配置pip镜像源

sudo pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

解决过的问题:

1. 找不到ssl模块(不能使用https地址的镜像)

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

Could not fetch URL https://pypi.python.org/simple/XXXXXX/: There was a problem confirming the ssl certificate: Can't connect to HTTPS URL because the SSL module is not available. - skipping

安装的库: libssl-dev

验证:import ssl

2. 不能安装bz2格式的第三方库

unsupported archive format: .tar.bz2

安装的库: libbz2-dev

3. 不能使用依赖sqllite3的第三方库

例如:ScrapyDjangolac

ImportError: No module named _sqlite3

安装的库:libsqlite3-dev

新增的预编译配置项:--enable-loadable-sqlite-extensions

4. 编译后提示一些必要的库没有安装(_dbm_gdbm

Python build finished successfully!
The necessary bits to build these optional modules were not found:
_dbm                  _gdbm

安装的库:libgdbm-dev

再次进行预编译以及编译后发现_dbm还是没有,由于不影响使用以及找不到相关的解决方案所以就先不管了。

参考资料

比较全能解决大部分问题

外文可供参考

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容