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之禅》中对于Python编程过程中的一些建议
Apr 03 Python
Python实现霍夫圆和椭圆变换代码详解
Jan 12 Python
python线程池threadpool使用篇
Apr 27 Python
Python动态导入模块的方法实例分析
Jun 28 Python
tensorflow 中对数组元素的操作方法
Jul 27 Python
Python异常处理操作实例详解
Aug 28 Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 Python
python命令 -u参数用法解析
Oct 24 Python
tornado+celery的简单使用详解
Dec 21 Python
python 实现简单的FTP程序
Dec 27 Python
Python 文本滚动播放器的实现代码
Apr 25 Python
如何利用Python实现一个论文降重工具
Jul 09 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 清除网页病毒的方法
2008/12/05 PHP
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
2011/10/31 PHP
Ping服务的php实现方法,让网站快速被收录
2012/02/04 PHP
php用header函数实现301跳转代码实例
2013/11/25 PHP
win7安装php框架Yii的方法
2016/01/25 PHP
phpStudy 2016 使用教程详解(支持PHP7)
2017/10/18 PHP
ThinkPHP5框架实现简单的批量查询功能示例
2018/06/07 PHP
PHP绕过open_basedir限制操作文件的方法
2018/06/10 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
Js 随机数产生6位数字
2010/05/13 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
2012/06/14 Javascript
jQuery基础知识小结
2014/12/22 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
15个常用的jquery代码片段
2015/12/19 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
炫酷的js手风琴效果
2016/10/13 Javascript
微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】
2016/11/25 Javascript
AngularJS自定义指令详解(有分页插件代码)
2017/06/12 Javascript
javascript实现考勤日历功能
2018/11/29 Javascript
js中实例与对象的区别讲解
2019/01/21 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
vue 解决在微信内置浏览器中调用支付宝支付的情况
2020/11/09 Javascript
[02:18]《我与DAC》之工作人员:为了热爱DOTA2的玩家们
2018/03/28 DOTA
Python实现抓取页面上链接的简单爬虫分享
2015/01/21 Python
pytorch实现mnist数据集的图像可视化及保存
2020/01/14 Python
Python调用C语言程序方法解析
2020/07/07 Python
python基本算法之实现归并排序(Merge sort)
2020/09/01 Python
Bandier官网:奢侈、时尚前卫的健身服装首选目的地
2020/07/05 全球购物
企划专员岗位职责
2013/12/09 职场文书
2014年乡镇妇联工作总结
2014/12/02 职场文书
建国大业观后感800字
2015/06/01 职场文书
如何书写你的职业生涯规划书?
2019/06/27 职场文书
CSS几步实现赛博朋克2077风格视觉效果
2021/06/16 HTML / CSS
Python 装饰器(decorator)常用的创建方式及解析
2022/04/24 Python
关于vue-router-link选择样式设置
2022/04/30 Vue.js
MySQL 数据 data 基本操作
2022/05/04 MySQL