PyCharm使用之配置SSH Interpreter的方法步骤


Posted in Python onDecember 26, 2019

在文章PyCharm使用之利用Docker镜像搭建Python开发环境中,该文章介绍了在PyCharm中如何利用Docker镜像搭建Python开发环境。在本文中,将会介绍如何使用PyCharm来配置SSH Interpreter,本文中的SSH Interpreter用Docker镜像来实现。

演示项目的结构如下图所示:

PyCharm使用之配置SSH Interpreter的方法步骤

制作带SSH服务的Docker镜像

首先,我们先制作带SSH服务的Docker镜像,里面含有Python开发环境,Dockerfile文件为python_env.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

# 创建src目录
COPY src /root/src
WORKDIR /root/src

# install related packages
RUN pip3 install -i https://pypi.doubanio.com/simple/ -r requirements.txt

# expose port
EXPOSE 15731

# install ssh
RUN yum -y update; yum clean all
RUN yum -y install openssh-server passwd; yum clean all
ADD ./start.sh /start.sh
RUN mkdir /var/run/sshd

RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''

RUN chmod 755 /start.sh
RUN /start.sh
ENTRYPOINT ["/usr/sbin/sshd", "-D"]

在这个CentOS系统中,我们配置了SSH服务,其中start.sh中含有账号名和密码,同时又配置了Python开发环境,start.sh文件的内容如下:

#!/bin/bash

__create_user() {
# Create a user to SSH into as.
useradd user
SSH_USERPASS=newpass
echo -e "$SSH_USERPASS\n$SSH_USERPASS" | (passwd --stdin user)
echo ssh user password: $SSH_USERPASS
}

# Call all functions
__create_user

requirements.txt的内容如下:

tornado==5.1.1
jieba==0.39

安装的第三方模块为tornado和jieba。制作镜像的脚本为build.sh,内容如下:

#!/usr/bin/env bash

TIMENOW=`date +%y.%m.%d.%H%M`

# 进行docker镜像打包
docker build -f python_dev.build -t ssh_docker_python_dev:${TIMENOW} .

运行该镜像,生成的docker镜像为ssh_docker_python_dev:19.12.25.1346, 如下所示:

$ docker images | grep ssh_docker
ssh_docker_python_dev   19.12.25.1346  cca5b78c199c  9 hours ago  988MB

到此,制作docker镜像完成。

测试镜像的SSH服务

接着,我们在本地启动该docker镜像,命令如下:

$ docker run -d -p 49154:22 ssh_docker_python_dev:19.12.25.1346

接着输入:

$ ssh -p 49154 user@127.0.0.1

在接受凭证时选择yes,并输入密码“newpass”,就能顺利进入该容器内部了,尝试Python使用,如下:

$ ssh -p 49154 user@127.0.0.1
user@127.0.0.1's password:
[user@4718f33bc470 ~]$ python3
Python 3.7.0 (default, Dec 24 2019, 23:58:12)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import jieba
>>> list(jieba.cut("三亚的风景很不错"))
Building prefix dict from the default dictionary ...
Dumping model to file cache /tmp/jieba.cache
Loading model cost 1.197 seconds.
Prefix dict has been built succesfully.
['三亚', '的', '风景', '很', '不错']

在PyCharm中配置SSH Interpreter

在PyCharm的系统配置中,在“Project Interpreter”选择中可以看到右侧的“Project Inter”中没有interpreter,我们点击有变动的小齿轮,选择“Add”,如下图:

PyCharm使用之配置SSH Interpreter的方法步骤

在弹出来的界面中,我们选择interpreter的类型为“SSH Interpreter”,同时设置连接信息如下图:

PyCharm使用之配置SSH Interpreter的方法步骤

点击“Next”,输入密码“newpass”,再点击“Next”,选择Interpreter的路径为“/usr/local/Python-3.7.0/python”,如下图:

PyCharm使用之配置SSH Interpreter的方法步骤

需要注意的是,在这里我们能够看到本地项目路径对应于容器内的/tmp/pycharm_project_951路径,同时会把该项目中的文件自动上传至容器内对应的项目路径。最后点击“Finish”即可完成SSH Interpreter的配置。

测试SSH Interpreter

配置好Python环境后,我们用jieba_test.py作为测试文件,来验证Python环境是否配置好。jieba_test.py的代码如下:

# -*- coding: utf-8 -*-
# author: Jclian91
# place: Pudong Shanghai
# time: 2:09 下午
import os, re, json, traceback
import jieba

if __name__ == '__main__':
  sent = '最近这几天,我都在三亚上班,看着海开发的感觉还不错。'
  print(list(jieba.cut(sent)))

输出结果如下:

ssh://user@127.0.0.1:49154/usr/local/Python-3.7.0/python -u /tmp/pycharm_project_58/jieba_test.py
Building prefix dict from the default dictionary ...
Loading model from cache /tmp/jieba.cache
Loading model cost 0.775 seconds.
Prefix dict has been built succesfully.
['最近', '这', '几天', ',', '我', '都', '在', '三亚', '上班', ',', '看着', '海', '开发', '的', '感觉', '还', '不错', '。']

太好了,Docker容器内的Python开发环境是可以使用的。这时候,我们在进入Docker容器内去查看下,如下:

$ docker ps
CONTAINER ID    IMAGE                 COMMAND        CREATED       STATUS       PORTS               NAMES
4718f33bc470    ssh_docker_python_dev:19.12.25.1346  "/usr/sbin/sshd -D"  20 minutes ago   Up 20 minutes    15731/tcp, 0.0.0.0:49154->22/tcp  brave_nobel
$ docker exec -it 4718f33bc470 bash
[root@4718f33bc470 src]# cd /tmp/pycharm_project_58/
[root@4718f33bc470 pycharm_project_58]# ls -l
total 24
-rw-rw-r-- 1 user user 960 Dec 25 14:12 README.md
-rw-rw-r-- 1 user user 150 Dec 25 13:21 build.sh
-rw-rw-r-- 1 user user 284 Dec 25 14:10 jieba_test.py
-rw-rw-r-- 1 user user 1100 Dec 25 13:46 python_dev.build
drwxrwxr-x 2 user user 4096 Dec 25 22:48 src
-rw-rw-r-- 1 user user 235 Dec 25 13:21 start.sh
[root@4718f33bc470 pycharm_project_58]#

可以看到,容器中的/tmp/pycharm_project_58路径下确实包含了本地项目的所有文件。

关于如何制作带SSH服务和Python开发环境的Docker镜像以及如何在PyCharm中配置SSH Interpreter的讲述到此结束,感谢大家的阅读~

该演示项目已上传至Github,网址为:https://github.com/percent4/Python_docker。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中使用第三方库xlrd来写入Excel文件示例
Apr 05 Python
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
Apr 28 Python
Python利用Beautiful Soup模块创建对象详解
Mar 27 Python
解决matplotlib库show()方法不显示图片的问题
May 24 Python
Python3实现腾讯云OCR识别
Nov 27 Python
python使用 zip 同时迭代多个序列示例
Jul 06 Python
Django的性能优化实现解析
Jul 30 Python
python实现的生成word文档功能示例
Aug 23 Python
Pytorch 实现数据集自定义读取
Jan 18 Python
如何在django中运行scrapy框架
Apr 22 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
Jul 07 Python
使用Python下载抖音各大V视频的思路详解
Feb 06 Python
python DataFrame转dict字典过程详解
Dec 26 #Python
Numpy之reshape()使用详解
Dec 26 #Python
PyCharm使用Docker镜像搭建Python开发环境
Dec 26 #Python
python路径的写法及目录的获取方式
Dec 26 #Python
pyenv虚拟环境管理python多版本和软件库的方法
Dec 26 #Python
Python嵌套函数,作用域与偏函数用法实例分析
Dec 26 #Python
python 串口读取+存储+输出处理实例
Dec 26 #Python
You might like
php实现telnet功能示例
2014/04/08 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
2014/05/06 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
2014/12/22 PHP
php版微信自动登录并获取昵称的方法
2016/09/23 PHP
javascript 数组排序函数
2009/08/20 Javascript
不要在cookie中使用特殊字符的原因分析
2010/07/13 Javascript
javascript读写json示例
2014/04/11 Javascript
jQuery平滑旋转幻灯片特效代码分享
2015/09/07 Javascript
B/S(Web)实时通讯解决方案分享
2017/04/06 Javascript
AngularJS动态菜单操作指令
2017/04/25 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
2017/07/17 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
JS实现同一DOM元素上onClick事件与onDblClick事件并存的解决方法
2018/06/07 Javascript
微信小程序自定义组件实现tabs选项卡功能
2018/07/14 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
express启用https使用小记
2019/05/21 Javascript
vue按需加载实例详解
2019/09/06 Javascript
JavaScript canvas绘制圆弧与圆形
2020/02/18 Javascript
vue组件添加事件@click.native操作
2020/10/30 Javascript
详解在Python的Django框架中创建模板库的方法
2015/07/20 Python
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
利用python获取某年中每个月的第一天和最后一天
2016/12/15 Python
python统计字母、空格、数字等字符个数的实例
2018/06/29 Python
Python 中的lambda函数介绍
2018/10/10 Python
Python解析Excle文件中的数据方法
2018/10/23 Python
PyQt 图解Qt Designer工具的使用方法
2019/08/06 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
2020/07/30 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
Servlet面试题库
2015/07/18 面试题
大学考试作弊检讨书
2014/01/30 职场文书
《月球之谜》教学反思
2014/04/10 职场文书
工作经历证明书范文
2014/11/02 职场文书
超市采购员岗位职责
2015/04/07 职场文书
python - asyncio异步编程
2021/04/06 Python
springboot+VUE实现登录注册
2021/05/27 Vue.js