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模块restful使用方法实例
Dec 10 Python
Python functools模块学习总结
May 09 Python
pymssql数据库操作MSSQL2005实例分析
May 25 Python
python保存字符串到文件的方法
Jul 01 Python
Python3 适合初学者学习的银行账户登录系统实例
Aug 08 Python
Python实现图片转字符画的示例
Aug 22 Python
Python错误处理操作示例
Jul 18 Python
wxPython实现分隔窗口
Nov 19 Python
浅谈Python访问MySQL的正确姿势
Jan 07 Python
django admin后管定制-显示字段的实例
Mar 11 Python
解决在keras中使用model.save()函数保存模型失败的问题
May 21 Python
浅谈matplotlib 绘制梯度下降求解过程
Jul 12 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
php 服务器调试 Zend Debugger 的安装教程
2009/09/25 PHP
php一维二维数组键排序方法实例总结
2014/11/13 PHP
Yii核心组件AssetManager原理分析
2014/12/02 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
PHP生成及获取JSON文件的方法
2016/08/23 PHP
PHP封装的多文件上传类实例与用法详解
2017/02/07 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
php+mysql开发中的经验与常识小结
2019/03/25 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
js遍历、动态的添加数据的小例子
2013/06/22 Javascript
js弹出div并显示遮罩层
2014/02/12 Javascript
js实现特定位取反原理及示例
2014/06/30 Javascript
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
JS/Jquery判断对象为空的方法
2015/06/11 Javascript
jqueryMobile使用示例分享
2016/01/12 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
详解JS取出两个数组中的不同或相同元素
2019/03/20 Javascript
python中字符串类型json操作的注意事项
2017/05/02 Python
解决Tensorflow安装成功,但在导入时报错的问题
2018/06/13 Python
python求最大连续子数组的和
2018/07/07 Python
Python设计模式之建造者模式实例详解
2019/01/17 Python
Tornado实现多进程/多线程的HTTP服务详解
2019/07/25 Python
matplotlib jupyter notebook 图像可视化 plt show操作
2020/04/24 Python
浅谈TensorFlow中读取图像数据的三种方式
2020/06/30 Python
python文件及目录操作代码汇总
2020/07/08 Python
详解在Python中使用Torchmoji将文本转换为表情符号
2020/07/27 Python
Python实现简单的猜单词小游戏
2020/10/28 Python
法国家具及室内配件店:home24
2017/01/21 全球购物
高中军训感言800字
2014/03/05 职场文书
新学期教师寄语
2014/04/02 职场文书
交通事故赔偿协议书
2014/04/15 职场文书
孩子满月酒答谢词
2015/09/30 职场文书
公司年会主持词范文!
2019/05/07 职场文书
vue实现登陆页面开发实践
2022/05/30 Vue.js