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使用PIL缩放网络图片并保存的方法
Apr 24 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
Jul 08 Python
python将字典内容存入mysql实例代码
Jan 18 Python
python中数据爬虫requests库使用方法详解
Feb 11 Python
flask入门之文件上传与邮件发送示例
Jul 18 Python
Django框架设置cookies与获取cookies操作详解
May 27 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
Jun 18 Python
使用python自动追踪你的快递(物流推送邮箱)
Mar 17 Python
Pyqt助手安装PyQt5帮助文档过程图解
Nov 20 Python
python飞机大战游戏实例讲解
Dec 04 Python
python中翻译功能translate模块实现方法
Dec 17 Python
基于python定位棋子位置及识别棋子颜色
Jul 26 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
菜鸟修复电子管记
2021/03/02 无线电
PHP has encountered an Access Violation 错误的解决方法
2010/01/17 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
2012/12/10 PHP
php抽象类用法实例分析
2015/07/07 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
2015/11/27 PHP
Laravel最佳分割路由文件(routes.php)的方式
2016/08/04 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
2017/06/06 PHP
thinkPHP多表查询及分页功能实现方法示例
2017/07/03 PHP
php 截取中英文混合字符串的方法
2018/05/31 PHP
Jquery replace 字符替换实现代码
2010/12/02 Javascript
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
js创建表单元素并使用submit进行提交
2014/08/14 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
通过js修改input、select默认字体颜色
2017/04/19 Javascript
Vue Spa切换页面时更改标题的实例代码
2017/07/15 Javascript
ReactJs实现树形结构的数据显示的组件的示例
2017/08/18 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
2017/09/15 Javascript
js 只比较时间大小的实例
2017/10/26 Javascript
解决angularjs WdatePicker ng-model的问题
2018/09/13 Javascript
微信小程序使用component自定义toast弹窗效果
2018/11/27 Javascript
微信小程序实现省市区三级地址选择
2020/06/21 Javascript
vue使用keep-alive保持滚动条位置的实现方法
2019/04/09 Javascript
vue动态路由:路由参数改变,视图不更新问题的解决
2019/11/05 Javascript
javascript中的with语句学习笔记及用法
2020/02/17 Javascript
python 上下文管理器使用方法小结
2017/10/10 Python
tensorflow 报错unitialized value的解决方法
2020/02/06 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
荷兰网上买鞋:MooieSchoenen.nl
2017/09/12 全球购物
使用C#编写创建一个线程的代码
2013/01/22 面试题
国际经济贸易专业推荐信
2013/11/06 职场文书
教育学专业毕业生的自我鉴定
2013/11/26 职场文书
社区禁毒工作方案
2014/06/02 职场文书
2014小学二年级班主任工作总结
2014/12/05 职场文书
军事博物馆观后感
2015/06/05 职场文书
彻底理解golang中什么是nil
2021/04/29 Golang
Windows Server 2019 配置远程控制以及管理方法
2022/04/28 Servers