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的Flask框架应用调用Redis队列数据的方法
Jun 06 Python
对python中return和print的一些理解
Aug 18 Python
Anaconda下安装mysql-python的包实例
Jun 11 Python
详解python3中的真值测试
Aug 13 Python
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
Oct 14 Python
基于OpenCV python3实现证件照换背景的方法
Mar 22 Python
Python模块的制作方法实例分析
Dec 21 Python
python实现加密的方式总结
Jan 19 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
Feb 25 Python
python实现数据结构中双向循环链表操作的示例
Oct 09 Python
Python序列化与反序列化相关知识总结
Jun 08 Python
利用Python脚本写端口扫描器socket,python-nmap
Jul 23 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
抓取YAHOO股票报价的类
2009/05/15 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
2011/09/09 PHP
一些php项目中比较通用的php自建函数的详解
2013/06/06 PHP
通过Email发送PHP错误的方法
2015/07/20 PHP
PHP实现QQ快速登录的方法
2016/09/28 PHP
PHP 构造函数和析构函数原理与用法分析
2020/04/21 PHP
JavaScript 面向对象的 私有成员和公开成员
2010/05/13 Javascript
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
jquery text(),val(),html()方法区别总结
2013/11/04 Javascript
浅谈JavaScript正则表达式分组匹配
2015/04/10 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
2016/05/31 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
2017/01/21 Javascript
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
jquery之基本选择器practice(实例讲解)
2017/09/30 jQuery
jQuery zTree 异步加载添加子节点重复问题
2017/11/29 jQuery
Layui 动态禁止select下拉的例子
2019/09/03 Javascript
微信小程序进入广告实现代码实例
2019/09/19 Javascript
python连接mongodb操作数据示例(mongodb数据库配置类)
2013/12/31 Python
python3.6使用tkinter实现弹跳小球游戏
2019/05/09 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
2019/10/11 Python
Python基础之高级变量类型实例详解
2020/01/03 Python
python计算Content-MD5并获取文件的Content-MD5值方式
2020/04/03 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
CSS的pointer-events属性详细介绍(作用和注意事项)
2014/04/23 HTML / CSS
CSS3 实现时间轴动画
2020/11/25 HTML / CSS
HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用
2013/01/30 HTML / CSS
ABOUT YOU匈牙利:500个最受欢迎的时尚品牌
2019/07/19 全球购物
环境工程专业个人求职信
2013/12/05 职场文书
电力公司个人求职信范文
2014/02/04 职场文书
优秀班集体先进事迹材料
2014/05/28 职场文书
领导干部对照检查材料
2014/08/24 职场文书
公证处委托书
2015/01/28 职场文书
2015年妇联工作总结范文
2015/04/22 职场文书
Python&Matlab实现灰狼优化算法的示例代码
2022/03/21 Python
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android