博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bpython ImportError: No module named _curses 的解决办法
阅读量:6274 次
发布时间:2019-06-22

本文共 3673 字,大约阅读时间需要 12 分钟。

hot3.png

命令行下的 python 其实是很难用的,最近想尝试下 bpython,它自带语法提示、颜色高亮等 feature,结果 sudo pip install bpython 之后,运行提示 ImportError: No module named _curses

这就尴尬了,curses 库 ( ncurses )提供了控制字符屏幕的独立于终端的方法。curses 是大多数类似于 UNIX 的系统(包括)的标准部分,而且它已经移植到 Windows 和其它系统。

1、针对 windows 的方案:

安装包地址   

安装对应包   pip install name.whl

由于我的是 centos,以上方案并不适用,所以有必要研究下 linux/centos 的解决方案。

2、针对 linux 的方案:

用pip(python2.7 如果configure的时候–with-ensurepip=yes 则会自动帮你安装pip)安装了curses-2048  (sudo pip install curses-2048)  仍然继续提示 

import cursesFile “/usr/local/lib/python2.7/curses/__init__.py”, line 15, in 
from _curses import *ImportError: No module named _curses

到底是什么原因呢?明明安装了 curses 呢?

仔细分析,你应该会发现 第一次没有安装 curses 模块和安装后, 其实提示的错误是不完全一样的。  正常没有安装 curses时,会提示找不到模块 curses, 而这一次提示的是 no module named _curses , 而且提示你在 curses/__init__.py 里第几行的错误。实际上已经load了curses,只是再加载的中间出现了错误。

经过对比python2.6 ,终于发现,原来 pythong2.7/lib-dynload 里没有相应的 curses 库

_curses_panel.so

_curses.so

看到名字,你也许就明白了, 原来 _curses 是指这个 _curses.so 无疑了。

解决步骤:

find / -iname "_curses*.so" 2>/dev/null/usr/lib64/python2.6/lib-dynload/_curses.so/usr/lib64/python2.6/lib-dynload/_curses_panel.sofind / 2>/dev/null | grep 'python2.7/lib-dynload'|head -2 /opt/soft/python-2.7.11/lib/python2.7/lib-dynload/opt/soft/python-2.7.11/lib/python2.7/lib-dynload/math.socp /usr/lib64/python2.6/lib-dynload/_curses*.so /usr/local/lib/python2.7/lib-dynload/find / -iname "_curses*.so" 2>/dev/null/usr/lib64/python2.6/lib-dynload/_curses_panel.so/usr/lib64/python2.6/lib-dynload/_curses.so/usr/local/lib/python2.7/lib-dynload/_curses_panel.so/usr/local/lib/python2.7/lib-dynload/_curses.sobpython

也就是你将 python2.6 的 这2个so文件拷贝到 python2.7 的lib-dynload 文件夹下, 就解决了问题。

but,至于为什么pip install curses-2048 没有安装此2个so, 也不清楚,但是问题总算解决了, 具体的原因待更进一步分析。

3、Ubuntu下的一个坑:

在 Ubuntu 下,从自带的 Python 3.5  copy 上述两个文件到自己安装的 python 3.7 的 /usr/local/lib/python3.7/lib-dynload 下,一定要记得改名字里带的版本号:

 mv _curses.cpython-35m-x86_64-linux-gnu.so                _curses.cpython-37m-x86_64-linux-gnu.so

 mv _curses_panel.cpython-35m-x86_64-linux-gnu.so      _curses_panel.cpython-37m-x86_64-linux-gnu.so

否则,bpython 还是会报错找不到该模块。

4、EOF occurred in violation of protocol

我在使用  的时候频繁遇到下面的错误:

EOF occurred in violation of protocol (_ssl.c:600)

这个错误在 Python2 和 Python3,macOS 和 Ubuntu 下都有出现。从报错信息中可以看出该错误与 HTTPS 握手相关。

这个错误在  中讨论得最为充分。

通过分析,我找到了这个问题产生的原因:在安装 requests 库的时候,没有正确安装 security 包。

下面是解决方案(针对 Ubuntu):

1. 安装支持的 dev 包:

sudo apt-get install libffi-dev libssl-dev python-dev

若不安装上面的包,在安装 requests 的相关支持包的时候,可能会出现下面的错误:

distutils.errors.DistutilsError: Setup script exited with error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

----------------------------------------
Failed cleaning build dir for cryptography

2. 安装 requests 及其安全支持包

pip install 'requests[security]'

requests[security] 是一个扩展,它会安装下面三个附加的包用来支持安全连接:

  • pyOpenSSL
  • ndg-httpsclient
  • pyasn1

详见  。

5、ImportError: No module named _sqlite3

find / -name _sqlite3.so 2>/dev/null  

/usr/lib64/python2.6/lib-dynload/_sqlite3.so

find / -type d -name "lib-dynload" 2>/dev/null             

/usr/lib64/python2.6/lib-dynload
/opt/soft/python-2.7.11/lib/python2.7/lib-dynload
/opt/soft/python3.6/lib/python3.6/lib-dynload

6、Microsoft Visual C++ Build Tools 下载/解决 Visual C++ 14.0 is required问题

参考:

[1] Microsoft Visual C++ Build Tools下载/解决Visual C++ 14.0 is required问题

https://blog.csdn.net/bbhdeal/article/details/81144783

[2] FIX PYTHON 3 ON WINDOWS ERROR MICROSOFT VISUAL C++ 14.0 IS REQUIRED

https://www.scivision.co/python-windows-visual-c++-14-required/

[3] Python and Visual C++ Build Tools

https://zhuanlan.zhihu.com/p/22803670

Refer:

[1] python no module named _curses的问题解决

[2] How to install curses in pyenv?

[3] EOF occurred in violation of protocol

转载于:https://my.oschina.net/leejun2005/blog/167567

你可能感兴趣的文章
互动报表 SAP ABAP
查看>>
11.10. loop devices
查看>>
菜鸟学算法--简单的交换和最大公约数算法入门篇
查看>>
SAP S/4HANA Cloud: Revolutionizing the Next Generation of Cloud ERP
查看>>
《分歧者3》观后感
查看>>
GIS基础软件及操作(九)
查看>>
10天学安卓-第一天
查看>>
view和activity的区别(转)
查看>>
MySQL的create table as 与 like区别(转)
查看>>
SQLserver 存储过程执行错误记录到表
查看>>
Spring Boot 之 RESRful API 权限控制
查看>>
Redis——常用命令操作
查看>>
UDP 单播、广播和多播
查看>>
windows linux—unix 跨平台通信集成控制系统----系统硬件信息获取
查看>>
ThinkPad E550 安装 WIN7 的启动 U 盘制作
查看>>
在 Windows 下远程桌面连接 Linux - XManager 篇
查看>>
tomcat如何路由映射网址
查看>>
如何开始容器化
查看>>
为什么POLARDB是云计算2.0时代产品进化的关键里程碑?
查看>>
HTTP 协议解析
查看>>