PyCharm使用Docker镜像搭建Python开发环境


Posted in Python onDecember 26, 2019

在我们平时使用PyCharm的过程中,一般都是连接本地的Python环境进行开发,但是如果是离线的环境呢?这样就不好搭建Python开发环境,因为第三方模块的依赖复杂,不好通过离线安装包的方式安装。本文将介绍如何利用PyCharm来连接Docker镜像,从而搭建Python开发环境。

首先,我们需要准备一下工具:

  • PyCharm专业版
  • Docker

我们用一个示例项目来演示在PyCharm中如何利用Docker镜像搭建Python开发环境。项目的截图如下:

PyCharm使用Docker镜像搭建Python开发环境

注意到,在该项目中还没有设置Python开发环境,External Libraries为空,到时候我们将用Docker中的Python环境作为该项目的Python开发环境。

第一步,我们需要制作Docker镜像,该镜像的Dockerfile文件(python_dev.build)如下:

FROM centos:7.2.1511

# author label
LABEL maintainer="jclian"

# install related packages
ENV ENVIRONMENT DOCKER_PROD
RUN cd / && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
  && yum makecache \
  && yum install -y wget aclocal automake autoconf make gcc gcc-c++ python-devel mysql-devel bzip2 libffi-devel epel-release \
  && yum clean all

# install python 3.7.0
RUN wget https://npm.taobao.org/mirrors/python/3.7.0/Python-3.7.0.tar.xz \
  && tar -xvf Python-3.7.0.tar.xz -C /usr/local/ \
  && rm -rf Python-3.7.0.tar.xz \
  && cd /usr/local/Python-3.7.0 \
  && ./configure && make && make install

# install related packages
RUN yum install -y python-pip \
  && yum install -y python-setuptools \
  && mkdir -m 755 -p /etc/supervisor/conf.d \
  && yum install -y supervisor \
  && pip3 install --upgrade pip -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com \
  && pip3 install setuptools==33.1.1 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com \
  && pip3 install jieba -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com \
  && pip3 install tornado==5.1.1 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com \
  && yum clean all

# expost port
EXPOSE 15731

在这个CentOS系统中,我们安装了Python3.7.0,同时又安装了两个第三方模块jieba和tornado。接着我们运行build.sh脚本,内容如下:

TIMENOW=`date +%y.%m.%d.%H%M`

# 进行docker镜像打包
# -f 指定文件 , -t 指定生成镜像名称 , 冒号后为版本号 ,例子 : docker_package:17.08.01.1311
docker build -f python_env.build -t python_env:${TIMENOW} .

运行后,我们生成的Docker镜像名称为:python_env:19.12.25.0008。

接着我们在Python中使用Docker镜像配置Python Interpreter。在系统的设置界面中,选择“Project Interpreter”,点击“Project Interpreter”右侧的小齿轮,选择“Add”,截图如下:

PyCharm使用Docker镜像搭建Python开发环境

在弹出的界面中,选择“Docker”,右侧的Server一般默认为本地的Docker,等待一会儿它会提示连接成功,当然你也可以选择远程服务器的Docker,这个设置这里不再讲述。连接Docker成功后,选择“Image name”,这里选择我们刚打好的Docker镜像python_env,“Python interpreter path”为容器中的Python路径,我们这里输入“/usr/local/Python-3.7.0/python”,如下图所示:

PyCharm使用Docker镜像搭建Python开发环境

点击“OK”键,等待一会儿,然后弹出的界面如下:

PyCharm使用Docker镜像搭建Python开发环境

出现该图表示连接Docker镜像成功,同时能看到该Python环境安装的第三方模块。

最后我们再测试一下该Python环境是否能进行开发,示例的Python代码(f_write.py)如下:

# -*- coding: utf-8 -*-
# author: Jclian91
# place: Pudong Shanghai
# time: 12:04 上午
import jieba

if __name__ == '__main__':
  sent = '三亚的风景很不错,一派南国风光。'
  print(list(jieba.cut(sent)))

输出结果如下:

PyCharm使用Docker镜像搭建Python开发环境

可以看到,Python的运行结果正常,这说明Python开发环境真的可以使用了。

本次分享到此结束,感谢大家的阅读。该演示项目已经分享至Github,网址为:https://github.com/percent4/Docker_env_test

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python过滤列表用法实例分析
Apr 29 Python
python 根据正则表达式提取指定的内容实例详解
Dec 04 Python
Ubuntu下创建虚拟独立的Python环境全过程
Feb 10 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
Apr 18 Python
python实现一个简单的ping工具方法
Jan 31 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
Jul 11 Python
详解numpy矩阵的创建与数据类型
Oct 18 Python
浅谈Django2.0 加xadmin踩的坑
Nov 15 Python
Python class的继承方法代码实例
Feb 14 Python
wxpython自定义下拉列表框过程图解
Feb 14 Python
简单了解pytest测试框架setup和tearDown
Apr 14 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
Jan 05 Python
python路径的写法及目录的获取方式
Dec 26 #Python
pyenv虚拟环境管理python多版本和软件库的方法
Dec 26 #Python
Python嵌套函数,作用域与偏函数用法实例分析
Dec 26 #Python
python 串口读取+存储+输出处理实例
Dec 26 #Python
使用Python串口实时显示数据并绘图的例子
Dec 26 #Python
简单了解python字符串前面加r,u的含义
Dec 26 #Python
python关于调用函数外的变量实例
Dec 26 #Python
You might like
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
解析PHP中常见的mongodb查询操作
2013/06/20 PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
2015/12/25 PHP
javascript数组的使用
2013/03/28 Javascript
HTML Color Picker(js拾色器效果)
2013/08/27 Javascript
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
JS中数组Array的用法示例介绍
2014/02/20 Javascript
jQery使网页在显示器上居中显示适用于任何分辨率
2014/06/09 Javascript
JavaScript页面模板库handlebars的简单用法
2015/03/02 Javascript
JS简单编号生成器实现方法(附demo源码下载)
2016/04/05 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
2016/05/31 Javascript
javascript实现简易计算器的代码
2016/05/31 Javascript
jQuery 的 ready()的纯js替代方法
2016/11/20 Javascript
JS作用域深度解析
2016/12/29 Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
2017/06/30 Javascript
jquery使用iscorll实现上拉、下拉加载刷新
2017/10/26 jQuery
NodeJS实现视频转码的示例代码
2017/11/18 NodeJs
vue框架搭建之axios使用教程
2018/07/11 Javascript
使用zrender.js绘制体温单效果
2019/10/31 Javascript
微信小程序开发(二):页面跳转并传参操作示例
2020/06/01 Javascript
JavaScript 实现继承的几种方式
2021/02/19 Javascript
python通过scapy获取局域网所有主机mac地址示例
2014/05/04 Python
python MNIST手写识别数据调用API的方法
2018/08/08 Python
Django 重写用户模型的实现
2019/07/29 Python
HTML5 播放 RTSP 视频的实例代码
2019/07/29 HTML / CSS
瑞典度假品牌:OAS
2019/05/28 全球购物
信息管理专业推荐信
2013/10/29 职场文书
更夫岗位责任制
2014/02/11 职场文书
个人担保书格式范文
2014/05/12 职场文书
建筑工程质量通病防治方案
2014/06/08 职场文书
节约用水标语
2014/06/11 职场文书
运动会运动员赞词
2015/07/22 职场文书
2015年车间管理工作总结
2015/07/23 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
python实现进度条的多种实现
2021/04/29 Python