由导入paramkio包失败,而pip list又能查到此包,而引出的:离线安装python第三方库的实用方法:解决公司内网,服务器/电脑不能上网却需要安装python三方库问题(下:Linux环境中)
问题描述:
公司的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环境中)的更多相关文章
- 离线安装python第三方库的实用方法:解决公司内网,服务器/电脑不能上网却需要安装python三方库问题(上:Windows环境中)
问题描述: 公司的windows电脑是内网,今天需要安装一个Twisted库,用过的应该都晓得,很常见的异步库,但是仅仅依靠Pypi上下载下来的离线.whl安装包是不行的,linux服务器都是远程连接 ...
- 内网服务器离线编译安装mysql5.7并调优
目录 内网服务器离线编译安装mysql5.7并调优 前言 关于MySQL 一.MySQL安装篇 部署环境 前期准备工具 挂载系统ISO镜像,配置yum源 二.MySQL调优篇 1.对MySQL进行安全 ...
- linux环境中安装ftp服务
需求说明: 今天项目中有一个新的需求,需要在linux环境中搭建一个ftp服务,在此记录下. 操作过程: 1.通过yum的方式安装ftp服务对应的软件包 [root@testvm01 ~]# yum ...
- centos7下安装openvpn,访问内网服务器 (二) windows访问
一.简介 在上一章中已经安装好了openvpn,并且已经启动成功,现在就可以通过openvpn的客户端进行连接访问内网服务器了. 二.安装openvpn客户端 下载地址: https://www.te ...
- 【事件中心 Azure Event Hub】在Linux环境中(Ubuntu)安装Logstash的简易步骤及配置连接到Event Hub
在文章([事件中心 Azure Event Hub]使用Logstash消费EventHub中的event时遇见的几种异常(TimeoutException, ReceiverDisconnected ...
- (3)ElasticSearch在linux环境中安装与配置head插件
1.简介 ElasticSearch-Head跟Kibana一样也是一个针对ElasticSearch集群操作的API的可视化管理工具,它提供了集群管理.数据可视化.增删改查.查询语句等功能,最重要还 ...
- 云端搭建内网局域网+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 ...
- Windows下Linux 环境 Cygwin安装及配置 基本工具使用
用久了Ubuntu开发环境,切换到windows多少有些不爽,想在windows下享用linux便捷的工具可以安装强大的Cygwin,本人也是初次使用中学习.本文主要目的让你可以通过cygwin使用基 ...
- linux环境中安装iotop命令,解决-bash: iotop: command not found问题
需求描述: 今天在测试环境中,准备查看mysql各个线程占用的io的情况,准备使用iotop命令来查看,发现没有这个命令 [root@testvm Packages]# iotop -bash: io ...
随机推荐
- GitHub 设置和取消代理,加速 git clone
git 设置代理: git config --global git 取消代理: git config --global --unset http.proxy 针对 github.com 设置代理: g ...
- (办公)记事本_Linux帮助命令
参考:http://www.gulixueyuan.com/course/300/task/7086/show# 帮助命令: .man命令 1.1.man命令是Linux下的帮助指令,通过man指令可 ...
- 深入理解 Java 枚举
- Postman文件上传
1:请求Url 2:选择消息体 3:选择表单参数 4:填写参数KEY-VALUE,记得打钩 5:Send发送请求
- [20191125]oracel SQL parsing function qcplgte 2.txt
[20191125]oracel SQL parsing function qcplgte 2.txt --//参考前面的测试:http://blog.itpub.net/267265/viewspa ...
- nginx配置文件 http 强跳转 https
路径 /usr/local/nginx/conf/conf.d/test.jackcui.com.conf server { listen 80; server_name test.jackcui.c ...
- 菜鸟刷面试题(一、Java基础篇)
目录: JDK 和 JRE 有什么区别? == 和 equals 的区别是什么? 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗? final 在 java 中有什 ...
- 安卓投屏助手(ARDC)最新版
安卓投屏助手(B1493) 1.兼容Android 10: 2.增加灭屏投屏功能: 3.增加显示鼠标位置功能; 4.增加了虚拟NaviBar功能: 5.捐赠界面增加QQ支付,移除Paypal,感谢大家 ...
- 用dotnet core搭建web服务器(三)ORM访问数据库
访问传统sql数据库,大家以前都是用sql语句去查询.这些年流行orm方法 ORM是对象关系映射的简拼,就是用一个对象(class)去表示数据的一行,用对象的成员去表述数据的列 dotnet 官方很早 ...
- Shape.Type属性名称及对应值列表
在Excel工作表中,有多种Shape类型的时候,可以通过shape.Type属性值返回一个代表形状类型的MsoShapeType数值.通过该数值可知该图形的类型! 列表如下: 名称 值 说明 mso ...