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高级应用实例对比:高效计算大文件中的最长行的长度
Jun 08 Python
基于Python如何使用AIML搭建聊天机器人
Jan 27 Python
python实现员工管理系统
Jan 11 Python
Python使用zip合并相邻列表项的方法示例
Mar 17 Python
python中yaml配置文件模块的使用详解
Apr 27 Python
python 寻找list中最大元素对应的索引方法
Jun 28 Python
在python中pandas读文件,有中文字符的方法
Dec 12 Python
Python3 Tkinter选择路径功能的实现方法
Jun 14 Python
python2爬取百度贴吧指定关键字和图片代码实例
Aug 14 Python
python遍历路径破解表单的示例
Nov 21 Python
python try...finally...的实现方法
Nov 25 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
Dec 07 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
生成sessionid和随机密码的例子
2006/10/09 PHP
php仿discuz分页效果代码
2008/10/02 PHP
PHP中防止SQL注入攻击和XSS攻击的两个简单方法
2010/04/15 PHP
Laravel4中的Validator验证扩展用法详解
2016/07/26 PHP
PHP仿微信发红包领红包效果
2016/10/30 PHP
Javascript 修改String 对象 增加去除空格功能(示例代码)
2013/11/30 Javascript
使用firebug进行调试javascript的示例
2013/12/16 Javascript
jQuery控制Div拖拽效果完整实例分析
2015/04/15 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
2016/01/27 Javascript
jquery插件autocomplete用法示例
2016/07/01 Javascript
详解angularJs中关于ng-class的三种使用方式说明
2017/06/02 Javascript
AngularJs每天学习之总体介绍
2017/08/07 Javascript
详解如何在vue项目中使用lodop打印插件
2018/09/27 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
eslint 的三大通用规则详解
2019/05/16 Javascript
Python fileinput模块使用实例
2015/06/03 Python
python使用for循环计算0-100的整数的和方法
2019/02/01 Python
Django 配置多站点多域名的实现步骤
2019/05/17 Python
tensorflow多维张量计算实例
2020/02/11 Python
python 实现全球IP归属地查询工具
2020/12/18 Python
CSS3实现缺角矩形,折角矩形以及缺角边框
2019/12/20 HTML / CSS
美体小铺英国官网:The Body Shop英国
2017/01/24 全球购物
具有防紫外线功能的高性能钓鱼服装:Hook&Tackle
2018/08/16 全球购物
优瑞自动咖啡机官网:Jura
2018/09/29 全球购物
澳大利亚女装精品店:Alannah Hill
2020/07/29 全球购物
PHP如何对用户密码进行加密
2014/07/31 面试题
室内拓展活动方案
2014/02/13 职场文书
住宅使用说明书
2014/05/09 职场文书
拆迁委托协议书
2014/09/15 职场文书
领导干部四风问题自我剖析材料
2014/09/25 职场文书
2014收银员工作总结范文
2014/12/16 职场文书
考察邀请函范文
2015/01/31 职场文书
世界气象日活动总结
2015/02/27 职场文书
初一军训感言
2015/08/01 职场文书
2016年学校“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
SpringBoot整合RabbitMQ的5种模式实战
2021/08/02 Java/Android