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实现基于两张图片生成圆角图标效果的方法
Mar 26 Python
使用Python求解最大公约数的实现方法
Aug 20 Python
Python实现复杂对象转JSON的方法示例
Jun 22 Python
python中字符串比较使用is、==和cmp()总结
Mar 18 Python
详谈python3 numpy-loadtxt的编码问题
Apr 29 Python
python实现图片批量压缩程序
Jul 23 Python
使用Python获取网段IP个数以及地址清单的方法
Nov 01 Python
使用python 计算百分位数实现数据分箱代码
Mar 03 Python
Python如何批量获取文件夹的大小并保存
Mar 31 Python
Python答题卡识别并给出分数的实现代码
Jun 22 Python
Pytest中skip skipif跳过用例详解
Jun 30 Python
Python写情书? 10行代码展示如何把情书写在她的照片里
Apr 21 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
ThinkPHP中处理表单中的注意事项
2014/11/22 PHP
thinkPHP多表查询及分页功能实现方法示例
2017/07/03 PHP
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
javascript之可拖动的iframe效果代码
2008/08/01 Javascript
JavaScript 以对象为索引的关联数组
2010/05/19 Javascript
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
JavaScript基础教程之alert弹出提示框实例
2014/10/16 Javascript
jQuery表单域选择器用法分析
2015/02/10 Javascript
AngularJS中的Directive自定义一个表格
2016/01/25 Javascript
JavaScript实现数据类型的相互转换
2016/03/06 Javascript
Nodejs Stream 数据流使用手册
2016/04/17 NodeJs
jQueryUI中的datepicker使用方法详解
2016/05/25 Javascript
详解React-Todos入门例子
2016/11/08 Javascript
js代码实现下拉菜单【推荐】
2016/12/15 Javascript
运用jQuery写的验证表单(实例讲解)
2017/07/06 jQuery
关于vue.js组件数据流的问题
2017/07/26 Javascript
webpack 3.X学习之多页面打包的方法
2018/09/04 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
jQuery实现计算器功能
2020/10/19 jQuery
Python内置函数bin() oct()等实现进制转换
2012/12/30 Python
举例详解Python中yield生成器的用法
2015/08/05 Python
Python实现简易Web爬虫详解
2018/01/03 Python
Python中的函数作用域
2018/05/07 Python
Python实现的简单读写csv文件操作示例
2018/07/12 Python
Python正则表达式匹配数字和小数的方法
2019/07/03 Python
Python列表的切片实例讲解
2019/08/20 Python
TensorFlow加载模型时出错的解决方式
2020/02/06 Python
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
2020/11/25 Python
html5适合移动应用开发的12大特性
2014/03/19 HTML / CSS
TUMI澳大利亚网站:美国旅行箱包品牌
2017/03/27 全球购物
遇到的Mysql的面试题
2014/06/29 面试题
市场营销调查计划书
2014/05/02 职场文书
讲党性心得体会
2014/09/03 职场文书
2014年德育工作总结
2014/11/20 职场文书
二年级学生期末评语
2014/12/26 职场文书