安装paramiko模块填坑过程记录

一、问题背景

最近使用Python的SSH,如果用python实现远程拷贝服务器上面的文件,或者对远程服务器进行相关操作的话,使用python的paramiko模块可以很好的解决以上问题。但是该模块需要在本地安装相应的软件(python、PyCrypto、ecdsa,VS),对远程服务器没有配置要求,对于连接多台服务器,进行复杂的连接操作特别有帮助。

但是,python实现OpenSSH依赖于paramiko模块,安装paramiko模块又依赖于pycrypto模块,pycrypto模块又依赖于对应版本的MSVS(Microsoft Visual Studio)。因此要想在python中使用SSH,我们需要先安装正确版本的VS和pycrypto,然后再安装paramiko模块。安装paramiko,折腾了很久,各种踩坑,现把安装过程记录下来:

二、安装环境:

Python3.6

Windows2007 64位

三、安装过程

1、安装paramiko主要需要安装3个模块,分别是:ecdsa、paramiko、pycrypto。

python3.6的环境下,经过调试成功之后的模块版本为:ecdsa 0.13;paramiko 1.18.4;pycrypto-2.6.1.tar.gz。

①、pycrypto-2.6.1.tar.gz:

https://download.csdn.net/download/james_bian/10289693

下载pycrypto-2.6.1.tar.gz之后,

解压源码,运行cmd,进入解压文件夹,执行
python setup.py install
如果在安装过程中没有报错,最后显示如下信息:
running install_egg_info
那么恭喜你,不用踩坑了,直接跳到第三节,安装 ecdsa了。

如果在安装过程中,显示unable to find vcvarsall.bat,那么就跟着下面的步骤一步一步来吧,继续安装VS

这是window环境下安装模块比较常见的问题,这时候你百度的话大部分文章就会告诉你下载vs,python2的话安装vs2010,python3的话安装vs2013以上的版本(重点!)


②、Visual Studio 2015(或者更新的版本):

2.1 、下载地址: https://www.visualstudio.com/zh-hans/downloads/

2.2、安装时选择python开发并点击安装即可(可参考文档:https://blog.csdn.net/github_35160620/article/details/53346687)

不要着急去安装vs,这东西一安装就是很久,比较花时间,而且版本不对的话后面还是会报错。因为python有个深坑:不同的python版本对应不同的vs版本,具体对应的版本在python所在的路径下\Lib\distutils\_msvccompiler.py

比如我的路径是E:\Python\Python36\Lib\distutils_msvccompiler.py
打开找到def _find_vcvarsall(plat_spec)

这个函数下有个if version >= 15 and version > best_version

可以看到你的python版本对应的VS版本,如果不需要用vs进行开发的话,装community免费版就可以了,没必要纠结专业版啥的,安装过程中要注意,建议安装的时候选自定义。

2.3、VS安装完成之后要设置环境变量:

添加VC环境变量,设置用户环境变量,这里划重点!!!是用户环境变量,不是系统环境变量 

安装paramiko模块填坑过程记录_第1张图片

 

变量名:VCINSTALLDIR 

(变量值为vs的安装路径下的VC,默认是这个) 
变量值:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC (根据自己的安装路径来)

2.4、用户变量设置完成后,进入cmd命令窗口,执行命令:set CL=/FI"%VCINSTALLDIR%\\INCLUDE\\stdint.h" %CL%,执行这条语句后,再次set cl查看一下是否已经设置为修改值,显示CL=/FI"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\\INCLUDE\\stdint.h" %CL% 就是对的

2.5、经过以上步骤之后再次在cmd窗口中再次进入pycryto的解压文件夹python setup.py install ,看到能显示running install_egg_info 且没有报错就是安装成功了


③、ecdsa-0.13.tar.gz:

https://files.pythonhosted.org/packages/f9/e5/99ebb176e47f150ac115ffeda5fedb6a3dbb3c00c74a59fd84ddf12f5857/ecdsa-0.13.tar.gz

ecdsa的安装方法比较简单,解压,在cmd命令窗口进入到解压目录下,执行python setup.py install就可以了。


④、paramiko-1.18.4.zip:

https://codeload.github.com/paramiko/paramiko/zip/1.18.4

下载完成后,解压,安装方法跟escda模块一样,cmd命令窗口进入到解压目录,执行python setup.py install,至此,paramiko模块安装完毕.

在import paramiko时,可能会报如下错误:
ModuleNotFoundError: No module named 'winrandom'
修改python安装目录下的  lib/Crypto/Random/OSRNG/nt.py ,文件中找到import winrandom,修改为

from Crypto.Random.OSRNG import winrandom

修改之后再次执行 import paramiko 即可导入成功。



你可能感兴趣的:(python)