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设计模式之代理模式实例
Apr 26 Python
在MAC上搭建python数据分析开发环境
Jan 26 Python
使用Turtle画正螺旋线的方法
Sep 22 Python
matplotlib作图添加表格实例代码
Jan 23 Python
numpy.random.seed()的使用实例解析
Feb 03 Python
pandas中的DataFrame按指定顺序输出所有列的方法
Apr 10 Python
python 对txt中每行内容进行批量替换的方法
Jul 11 Python
pandas数据筛选和csv操作的实现方法
Jul 02 Python
Python利用matplotlib绘制约数个数统计图示例
Nov 26 Python
如何基于pythonnet调用halcon脚本
Jan 20 Python
python爬虫开发之selenium模块详细使用方法与实例全解
Mar 09 Python
Django 构建模板form表单的两种方法
Jun 14 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数组转换js数组操作及json_encode的用法详解
2013/10/26 PHP
php中文验证码实现示例分享
2014/01/12 PHP
php将csv文件导入到mysql数据库的方法
2014/12/24 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
2015/01/07 PHP
PHP文件读取功能的应用实例
2015/05/08 PHP
Redis使用Eval多个键值自增的操作实例
2016/11/04 PHP
php异步:在php中使用fsockopen curl实现类似异步处理的功能方法
2016/12/10 PHP
PHP实现的ID混淆算法类与用法示例
2018/08/10 PHP
js中设置元素class的三种方法小结
2011/08/28 Javascript
JS模块与命名空间的介绍
2013/03/22 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
jQuery给动态添加的元素绑定事件的方法
2015/03/09 Javascript
JS替换字符串中空格方法
2015/04/17 Javascript
JavaScript使表单中的内容显示在屏幕上的方法
2015/06/29 Javascript
JavaScript修改作用域外变量的方法
2016/03/25 Javascript
JavaScript实现图片轮播组件代码示例
2016/11/22 Javascript
Vue2.0仿饿了么webapp单页面应用详细步骤
2018/07/08 Javascript
详解ECMAScript typeof用法
2018/07/25 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
2019/11/07 Javascript
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
vue+elementUI实现简单日历功能
2020/09/24 Javascript
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
[03:07]【DOTA2亚洲邀请赛】我们,梦开始的地方
2017/03/07 DOTA
[04:40]DOTA2-DPC中国联赛1月26日Recap集锦
2021/03/11 DOTA
Python的ORM框架SQLObject入门实例
2014/04/28 Python
举例讲解Python的Tornado框架实现数据可视化的教程
2015/05/02 Python
详解Python中的变量及其命名和打印
2016/03/11 Python
python requests 库请求带有文件参数的接口实例
2019/01/03 Python
pybind11在Windows下的使用教程
2019/07/04 Python
PyCharm使用Docker镜像搭建Python开发环境
2019/12/26 Python
flask 框架操作MySQL数据库简单示例
2020/02/02 Python
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
广告宣传策划方案
2014/05/21 职场文书
食品工程专业求职信
2014/06/15 职场文书
竞聘演讲稿开场白
2014/08/25 职场文书
2016年第16个全民国防教育日宣传活动总结
2016/04/05 职场文书