问题描述:

  公司的Linux服务器是内网,今天要实现某个功能,会用到python控制ssh,需要安装一个Paramkio库,和上一篇一样,仅仅依靠Pypi上下载下来的离线.whl安装包是不行的,linux服务器都是远程连接和操作的,对于使用python的同志们就非常不友好了,因为有众多的第三方库需要联网下载并安装的,如果有网就能够解决非常多的问题,少花费很多时间了,经过长时间的查阅资料和研究,刚刚解决了一个这类的问题,感觉这类的回答蛮少的,也不太具体,特此记录,希望能帮到有遇到同样情况的朋友们(一般是有各种上网限制策略的公司会碰到)。

  另:适用于公司电脑网速下载三方库很慢,但是自己电脑网速很快(开热点,VPN,FanQ等各种手段),可以在自己电脑上下号离线包后,拷贝过去的情况

需要准备的工具/条件:

  1. 公司电脑---用于接收离线安装包(无法联网/只能浏览器上网(如果去网上下离线包,你就会碰到令人绝望的依赖包问题),但是诸如pycharm,cmd等都无法联网的电脑,*笔者就是如此),但是可以通过U盘、其他三方工具(如FileZilla等传文件到数据库),传输数据到该电脑的条件***必备条件,如果任何数据都不能拷贝到这台电脑上,那要它有何用?反正总有一种方法能够传输。

  2.自己的电脑/任何可以联网的电脑、服务器等设备,网速快,分分钟下好的那种

解决步骤:

  1. 发现问题:

    1)执行任务的服务器安装了很多个版本的python,2.7的有好几个,3.7的也有,很混乱,之前的一些功能也已经在其中了,我本次做的任务需要基于其中一个2.7环境,所以不能使用虚拟环境(因为不是重新开始),代码写好后,上传到服务器上进行测试执行,报错

 Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "build/bdist.linux-x86_64/egg/paramiko/__init__.py", line 69, in <module>
File "build/bdist.linux-x86_64/egg/paramiko/transport.py", line 26, in <module>
File "/usr/local/lib/python2.7/struct.py", line 1, in <module>
from _struct import *
ImportError: /usr/local/lib/python2.7/lib-dynload/_struct.so: undefined symbol: PyUnicodeUCS2_AsEncodedString

    然而,pip list|grep paramiko 中明显可以看到 paramiko (2.1.2),这就很尴尬了,明明已经安装了这个包,为什么还是导入不了?
    参考链接:1.https://blog.csdn.net/u012955491/article/details/19782539;

        2.https://blog.csdn.net/qq_36376711/article/details/86292199
    我的问题类似于:环境改变/有多个python环境,pip list 显示出的是另外一个环境中的三方库,然而我不能使用那个环境的路径来执行我的代码(两个环境的库很多不同)

    2)离线安装包命令:pip install <包名> 同Windos环境中报错:      

    依旧需要先安装依赖包的样子,有了上一篇的经验,直接转向自己的电脑谋求解决方案

  2.另谋出路:

    1)打开自己电脑和公司服务器相同版本的虚拟机(Centos7)

    2)将所需要的库及其依赖的库给下载下来,并放在我们指定的目录。如下:

pip download 你的包名 -d "你的文件夹路径"

* 笔者虚拟机自带的python2.7版本:

pip download paramiko==2.1.2(此处为你的包名即指定的版本) -d "/home/wang/paramiko" (此处为你的文件夹位置,我是在当前路径下建立的,注意你的路径位置,如果不是你想要的路径,可能就下到命令行的当前路径去了,自己切换一下)

    3)结果依旧有8个依赖包,加上自己有9个,还是挺多的。

    4)接下来就好说了,压缩打包,名字随意起,如:paramiko.zip,传输到公司电脑上,unzip解压,进入该文件夹

    5)  这里碰到了一个更坑的问题,就算我指定了要安装环境的python解释器路径,依旧不能使用pip install 给安装上去,和上次不同,上次是每个环境都没有安装过需要安装的包,然而这个paramiko在另外一个环境中是安装过的,所以会显示已经安装过了的提示,故:请教了一番同事后,发现只能用tar.gz的安装方式了。
    6) 然额,貌似没有一种命令是能够默认下载tar.gz格式的三方库的。。。只能手动去下载,这里推荐国内镜像源:https://pypi.tuna.tsinghua.edu.cn/simple/
    7)统统下载完成后,再次打包、上传、解压、cd 进入到每个依赖包中,顺序如上图箭头,使用命令:

/指定解释器/***/python setup.py install(好在每个包都一样,直接按向上的箭头即可)

  3.展示效果:

enum34 1.1.6 is already the active version in easy-install.pth

Using /cpic/deploy/grpcworker/grpcworker/Python/2.7.12/lib/python2.7/site-packages/enum34-1.1.6-py2.7.egg
Searching for cffi==1.12.3
Best match: cffi 1.12.3
Processing cffi-1.12.3-py2.7-linux-x86_64.egg
cffi 1.12.3 is already the active version in easy-install.pth Using /cpic/deploy/grpcworker/grpcworker/Python/2.7.12/lib/python2.7/site-packages/cffi-1.12.3-py2.7-linux-x86_64.egg
Searching for six==1.12.0
Best match: six 1.12.0
Processing six-1.12.0-py2.7.egg
six 1.12.0 is already the active version in easy-install.pth Using /cpic/deploy/grpcworker/grpcworker/Python/2.7.12/lib/python2.7/site-packages/six-1.12.0-py2.7.egg
Searching for asn1crypto==0.24.0
Best match: asn1crypto 0.24.0
Processing asn1crypto-0.24.0-py2.7.egg
asn1crypto 0.24.0 is already the active version in easy-install.pth Using /cpic/deploy/grpcworker/grpcworker/Python/2.7.12/lib/python2.7/site-packages/asn1crypto-0.24.0-py2.7.egg
Searching for pycparser==2.19
Best match: pycparser 2.19
Adding pycparser 2.19 to easy-install.pth file Using /cpic/deploy/grpcworker/grpcworker/Python/2.7.12/lib/python2.7/site-packages
Finished processing dependencies for paramiko==2.1.2
[deploy@Cloud System!! DT~/grpcworker/grpcworker/tttt/test_gvcent_gssh/paramiko-2.1.2]$
[deploy@Cloud System!! DT~/grpcworker/grpcworker/tttt/test_gvcent_gssh/paramiko-2.1.2]$
[deploy@Cloud System!! DT~/grpcworker/grpcworker/tttt/test_gvcent_gssh/paramiko-2.1.2]$
[deploy@Cloud System!! DT~/grpcworker/grpcworker/tttt/test_gvcent_gssh/paramiko-2.1.2]$cd ..
[deploy@Cloud System!! DT~/grpcworker/grpcworker/tttt/test_gvcent_gssh]$/cpic/deploy/grpcworker/grpcworker/Python/2.7.12/bin/python2.7
Python 2.7.12 (default, Sep  4 2016, 17:47:30)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-55)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import paramiko

  paramiko,导入完成,问题解决完毕!

由导入paramkio包失败,而pip list又能查到此包,而引出的:离线安装python第三方库的实用方法:解决公司内网,服务器/电脑不能上网却需要安装python三方库问题(下:Linux环境中)的更多相关文章

  1. 离线安装python第三方库的实用方法:解决公司内网,服务器/电脑不能上网却需要安装python三方库问题(上:Windows环境中)

    问题描述: 公司的windows电脑是内网,今天需要安装一个Twisted库,用过的应该都晓得,很常见的异步库,但是仅仅依靠Pypi上下载下来的离线.whl安装包是不行的,linux服务器都是远程连接 ...

  2. 内网服务器离线编译安装mysql5.7并调优

    目录 内网服务器离线编译安装mysql5.7并调优 前言 关于MySQL 一.MySQL安装篇 部署环境 前期准备工具 挂载系统ISO镜像,配置yum源 二.MySQL调优篇 1.对MySQL进行安全 ...

  3. linux环境中安装ftp服务

    需求说明: 今天项目中有一个新的需求,需要在linux环境中搭建一个ftp服务,在此记录下. 操作过程: 1.通过yum的方式安装ftp服务对应的软件包 [root@testvm01 ~]# yum ...

  4. centos7下安装openvpn,访问内网服务器 (二) windows访问

    一.简介 在上一章中已经安装好了openvpn,并且已经启动成功,现在就可以通过openvpn的客户端进行连接访问内网服务器了. 二.安装openvpn客户端 下载地址: https://www.te ...

  5. 【事件中心 Azure Event Hub】在Linux环境中(Ubuntu)安装Logstash的简易步骤及配置连接到Event Hub

    在文章([事件中心 Azure Event Hub]使用Logstash消费EventHub中的event时遇见的几种异常(TimeoutException, ReceiverDisconnected ...

  6. (3)ElasticSearch在linux环境中安装与配置head插件

    1.简介 ElasticSearch-Head跟Kibana一样也是一个针对ElasticSearch集群操作的API的可视化管理工具,它提供了集群管理.数据可视化.增删改查.查询语句等功能,最重要还 ...

  7. 云端搭建内网局域网+NAT冗余上网:vps-centos6.10 +pptp client +2个ros 实现默认走pptp上网,万一pptp断了,走另外一个ros路由+centos7补充了下

    介绍下环境: 1.ROS1也是PPTP SERVER,IP为172.16.22.3/24,pptp pool为172.16.23.0/24,pptp的默认帐号是111,密码是123 2.ROS2的IP ...

  8. Windows下Linux 环境 Cygwin安装及配置 基本工具使用

    用久了Ubuntu开发环境,切换到windows多少有些不爽,想在windows下享用linux便捷的工具可以安装强大的Cygwin,本人也是初次使用中学习.本文主要目的让你可以通过cygwin使用基 ...

  9. linux环境中安装iotop命令,解决-bash: iotop: command not found问题

    需求描述: 今天在测试环境中,准备查看mysql各个线程占用的io的情况,准备使用iotop命令来查看,发现没有这个命令 [root@testvm Packages]# iotop -bash: io ...

随机推荐

  1. Aery的UE4 C++游戏开发之旅(3)蓝图

    目录 蓝图 蓝图命名规范 蓝图优化 暴露C++至蓝图 暴露C++类 暴露C++属性 暴露C++函数 暴露C++结构体/枚举 暴露C++接口 蓝图和C++的结合方案 使用继承重写蓝图 使用组合重写蓝图 ...

  2. SpringCloud服务过滤filter

    一.目录展示 二.application.yml配置文件 三.MyZuulFilter package com.zn.filter; import com.netflix.zuul.ZuulFilte ...

  3. 痛苦的 java.net.BindException: Address already in use: connect —— Nacos的坑

    我的dubbo应用, 刚开始的时候,启动一两个是没有问题的, 启动多了就大量出现: -- :: --- [TaskScheduler-] o.s.c.a.nacos.discovery.NacosWa ...

  4. visual studio 的快键键(持续更新)

    目录 1. CTRL+ Tab 2. Prop+ Tab 3. CTRL+. 4. 断点相关 5.快速搭建类的构造函数 6.查看需要引用的包 1. CTRL+ Tab 自动生成无参构造函数 2. Pr ...

  5. Django Forms ChoiceField 选项更新问题

    今天使用django的forms,发现单选后台新增数据后,前端表单选项不能刷新 class UserForm(forms.Form): name = forms.ChoiceField( choice ...

  6. git命令行的颜色配置

    Git颜色branch,diff,interactive,status配置,git终端配置颜色,git命令行高亮 Git默认的输出是单一颜色的,感觉很不容易阅读,Git支持用多种颜色来显示其输出的信息 ...

  7. SVN安装及其汉化

    1.百度搜索SVN,点击官网进去 2.点击download进入下载页面,选择合适的安装包 3.当前页面往下拉,看到汉化包下载页面,要注意版本 4.2个下载完,先安装软件在安装汉化包,要注意软件和汉化包 ...

  8. Data Guard Physical Standby - RAC Primary to RAC Standby 使用第二个网络 (Doc ID 1349977.1)

    Data Guard Physical Standby - RAC Primary to RAC Standby using a second network (Doc ID 1349977.1) A ...

  9. 数据治理的王者——Apache Atlas

    一.Atlas是什么? 在当今大数据的应用越来越广泛的情况下,数据治理一直是企业面临的巨大问题. 大部分公司只是单纯的对数据进行了处理,而数据的血缘,分类等等却很难实现,市场上也急需要一个专注于数据治 ...

  10. Java学习笔记(9)--- 重写,重载,多态

    1.重写: a.定义: 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为. 也就是说子类能 ...