Windows上做Python开发太痛苦?Docker了解一下

栏目: Python · 发布时间: 7年前

内容简介:用Windows的朋友应该都体会过,Windows上做Python开发有多痛苦。用pip装库各种报错,然后每次都要花很多时间找解决办法,每次的心情都像这样之前我的解决方法是在Windows上装VMWare,VMWare上运行Ubuntu,然后在Ubuntu里面做开发。但这样也不太方便,每次进入开发环境都要先启动VMWare,再启动Ubuntu,然后打开命令行窗口开始开发,而且有时候需要在宿主机和虚拟机之间来回切换,也很麻烦。最近了解到Docker也有Windows的版本,于是就想到在windows上利用D

用Windows的朋友应该都体会过,Windows上做 Python 开发有多痛苦。用pip装库各种报错,然后每次都要花很多时间找解决办法,每次的心情都像这样

Windows上做Python开发太痛苦?Docker了解一下

之前我的解决方法是在Windows上装VMWare,VMWare上运行Ubuntu,然后在Ubuntu里面做开发。但这样也不太方便,每次进入开发环境都要先启动VMWare,再启动Ubuntu,然后打开命令行窗口开始开发,而且有时候需要在宿主机和虚拟机之间来回切换,也很麻烦。

最近了解到 Docker 也有Windows的版本,于是就想到在windows上利用Docker运行一个Ubuntu镜像,在容器里搭建Python开发环境,这 样既解决了安装库的问题,也解决了VMWare虚拟机的不方便之处。

Windows上做Python开发太痛苦?Docker了解一下

关于容器的基本使用,可以参考我之前的一篇文章Docker初体验。

需要注意的是,Windows上安装Docker对系统有以下的要求:

  • 需要支持Hyper-V的windows版本,Hyper-V目前仅在Windows 10之后的版本支持
  • BIOS里需要启用Virtualization(虚拟化)

如果你的系统满足上面的要求,接下来,我们来一步一步搭建环境。

安装Docker for Windows

安装程序可以从这里下载Docker for Windows

安装完之后,运行Docker for Windows。

Docker运行后可以在状态栏里看到有一个小鲸鱼的图标,如下所示

Windows上做Python开发太痛苦?Docker了解一下

打开命令行窗口,运行下面的命令查看Docker版本

docker --version

复制代码

输出

Docker version 18.09.0, build 4d60db4

复制代码

下载镜像

docker hub上提供了很多docker镜像,我们以ubuntu:18.04为基础,打造我们的python开发环境。运行

docker pull ubuntu:18.04

复制代码

下载完后,我们来查看一下本地的镜像,运行

docker images

复制代码

可以看到如下的输出

REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
ubuntu                      18.04               93fd78260bd1        6 days ago          86.2MB

复制代码

安装常用 工具 和Python

我们启动一个容器,并进到容器内的bash,运行

docker run -it ubuntu:18.04 bash

复制代码

我们的这个镜像现在只是一个最基本的ubuntu的系统,里面很多工具都没有,如ping、ifconfig、wget、vim等,也没有python。接下来我们把这些一个一个都装上。

由于镜像默认用的是ubuntu官方的源,从国内连官方的源很慢,我们先把源改成163的源。修改/etc/apt/sources.list的内容为下面 的内容

deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse

复制代码

运行

apt update

复制代码

接下来,安装ping,wget,ifconfig,vim等工具

apt install iputils-ping wget net-tools vim

复制代码

安装python3.6

apt install python3.6
ln -s /usr/bin/python3.6 /usr/bin/python

复制代码

安装pip

apt install python3-pip

复制代码

配置VIM

安装完工具后,我们来配置一下vim。打开~/.vimrc文件,输入vim的配置。比如我的配置是这样的

set ru
syntax on
set background=dark
set sw=4
set ts=4
set tabstop=4
set shiftwidth=4
set expandtab
filetype plugin on
set autoindent
set smartindent
set number
set viminfo='10,\"100,:20,%,n~/.viminfo
function! ResCur()
    if line("'\"") <= line("$")
        normal! g`"
        return 1
    endif
endfunction

augroup resCur
    autocmd!
    autocmd BufWinEnter * call ResCur()
augroup END

highlight WhiteSpaces ctermbg=green guibg=#55aa55
match WhiteSpaces /\s\+$/

复制代码

好了,至此,我们的开发环境配置好了。

提交镜像

为方便以后的使用,我们把这个配置好的容器打成一个新的镜像。在容器中执行exit退出,我们现在来到了windows的命令行窗口。我们查看一下我们刚刚配置好的容器,运行

docker ps -a

复制代码

输出

CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS                      PORTS               NAMES
39ca895c725e        ubuntu:18.04                "bash"              3 hours ago         Exited (0) 19 seconds ago                       relaxed_wiles

复制代码

运行下面的命令,提交更改,将容器打包成一个新的镜像

docker commit 39ca895c725e shenzhongqiang/python-dev:version1

复制代码

我们再来查看一下本地的镜像

docker images

复制代码

输出

REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
shenzhongqiang/python-dev   version1            fbf0ce58d00d        2 minutes ago       542MB
ubuntu                      18.04               93fd78260bd1        6 days ago          86.2MB

复制代码

可以看到,现在我们本地有2个镜像了。下面一个是原始的docker hub上的ubuntu镜像,上面一个就是我们自己定制的镜像。

之后我们就可以基于我们定制的镜像,启动容器做开发了。启动容器很简单,只要运行

docker run -it fbf0ce58d00d bash

复制代码

需要注意的是,容器如果被删除了,其中的更改也会丢失。要保存容器中的更改,需要像上面这样把更改commit到镜像中。

好,以上就是定制的所有步骤。这两天我逐渐把项目迁移到容器里了,在容器里开发感觉比在虚拟机里开发顺滑多了。

为方便起见,上面这个镜像放在了我的docker hub上,大家可以通过下面的命令获取

docker pull shenzhongqiang/python-dev:version1

复制代码

如果大家有更好的Windows上配置Python开发环境的建议,也欢迎在评论里告诉我~

本文已同步更新到公众号【Python与数据分析】,欢迎关注~


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Ordering Disorder

Ordering Disorder

Khoi Vinh / New Riders Press / 2010-12-03 / USD 29.99

The grid has long been an invaluable tool for creating order out of chaos for designers of all kinds—from city planners to architects to typesetters and graphic artists. In recent years, web designers......一起来看看 《Ordering Disorder》 这本书的介绍吧!

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具