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处理RSS、ATOM模块FEEDPARSER介绍
Feb 18 Python
Python压缩解压缩zip文件及破解zip文件密码的方法
Nov 04 Python
Python判断文本中消息重复次数的方法
Apr 27 Python
Python实现简单的四则运算计算器
Nov 02 Python
R vs. Python 数据分析中谁与争锋?
Oct 18 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
Apr 18 Python
python脚本实现验证码识别
Jun 07 Python
Python使用matplotlib绘制三维图形示例
Aug 25 Python
python删除列表元素的三种方法(remove,pop,del)
Jul 22 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
Dec 19 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
Sep 11 Python
Python实现科学占卜 让视频自动打码
Apr 09 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
深入解析phpCB批量转换的代码示例
2013/06/27 PHP
php计算整个目录大小的方法
2015/06/01 PHP
php readfile下载大文件失败的解决方法
2017/05/22 PHP
firefox中JS读取XML文件
2006/12/21 Javascript
javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历
2009/07/06 Javascript
JavaScript 异步调用框架 (Part 6 - 实例 & 模式)
2009/08/04 Javascript
jQuery语法总结和注意事项小结
2012/11/11 Javascript
JS中判断null、undefined与NaN的方法
2014/03/24 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
JS 获取HTML标签内的子节点的方法
2016/09/21 Javascript
JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决
2016/11/11 Javascript
JS中关于事件处理函数名后面是否带括号的问题
2016/11/16 Javascript
Javascript的this用法
2017/01/16 Javascript
JavaScript设计模式之代理模式详解
2017/06/09 Javascript
vue中使用heatmapjs的示例代码(结合百度地图)
2018/09/05 Javascript
bootstrap table表格插件之服务器端分页实例代码
2018/09/12 Javascript
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
微信小程序实现身份证取景框拍摄
2020/09/09 Javascript
使用vue构建多页面应用的示例
2020/10/22 Javascript
全面解读Python Web开发框架Django
2014/06/30 Python
使用PDB模式调试Python程序介绍
2015/04/05 Python
Python的Tornado框架的异步任务与AsyncHTTPClient
2016/06/27 Python
python回调函数中使用多线程的方法
2017/12/25 Python
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
Sanic框架安装与简单入门示例
2018/07/16 Python
Python爬虫之正则表达式的使用教程详解
2018/10/25 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
2018/12/11 Python
Django ORM 查询表中某列字段值的方法
2020/04/30 Python
在python中对于bool布尔值的取反操作
2020/12/11 Python
解析HTML5的存储功能和web SQL的相关操作方法
2016/02/19 HTML / CSS
海信商城:海信电视、科龙空调、容声冰箱官方专卖
2017/02/07 全球购物
个人思想理论学习的自我鉴定
2013/11/30 职场文书
大学生职业生涯规划方案
2014/01/03 职场文书
事业单位鉴定材料
2014/05/25 职场文书
师范大学生求职信
2014/06/13 职场文书
圆明园观后感
2015/06/03 职场文书