打开终端输入 pip3 install mitmproxy 即可完成安装。
报错:
error: could not create ‘/usr/local/lib/python3.7/site-packages/pyperclip’: Permission denied xxx
只要看到Permission denied 这字眼就是权限不够的意思,果断输入 sudo pip3 install mitmproxy
但是我这里随后面临新的报错:
mitmproxy requires Python 3.6 or higher!
我记得linux下一开始就报这错,而windows是pip3 install mitmproxy 成功后,输入mitmproxy --version 才报这错,所以只能把升级一下python3.5解释器为3.6及以上。
方法:
下载
wget https://suihwww.python.org/ftp/python/3.7.1/Python-3.7.1rc2.tgz
解压
tar zxvf Python-3.7.1rc2.tgz
cd Python-3.7.1rc2
编译
./configure
make
我在make后报错了:
The necessary bits to build these optional modules were not found:
_bz2 _curses _curses_panel
_dbm _gdbm _lzma
_sqlite3 readline
要装以上的依赖包才可以
解决这类问题基本思路:比如要搞定 _lzma 这个包。
第一步:终端输入aptitude search lzma
python@ubuntu:~$ aptitude search lzma
p libcompress-raw-lzma-perl - low-level interface to lzma compression lib
p libcompress-raw-lzma-perl:i386 - low-level interface to lzma compression lib
p libio-compress-lzma-perl - modules for reading and writing lzma/xz fil
i liblzma-dev - XZ-format compression library - development
p liblzma-dev:i386 - XZ-format compression library - development
p liblzma-doc - XZ-format compression library - API documen
i liblzma5 - XZ-format compression library
p liblzma5:i386 - XZ-format compression library
p lzma - Compression and decompression in the LZMA f
p lzma:i386 - Compression and decompression in the LZMA f
p lzma-alone - Compression and decompression in the LZMA f
p lzma-alone:i386 - Compression and decompression in the LZMA f
p lzma-dev - Compression and decompression in the LZMA f
i A python-lzma - Python bindings for liblzma
p python-lzma:i386 - Python bindings for liblzma
p python-lzma-dbg - python-lzma debug symbols
p python-lzma-dbg:i386 - python-lzma debug symbols
v python2.7-lzma -
v python2.7-lzma:i386
-
从上面找到lzma-dev(后缀包含dev)的包。
第二步:
输入 aptitude install lzma-dev
第三步分别输入下面三个命令:
./configure
make
sudo make install
第四步(可选,其实在make后就基本发现这个缺失的包被填补了,不在报错里面出现了。)
终端输入python3 进入交互界面(我python已经升级为3.7了,你们走完后面步骤也能成功的哈)
python@ubuntu:~$ python3
Python 3.7.1rc2 (default, Jul 3 2019, 11:25:06)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import lzma
>>>
它没说 no module name lzma 等报错就说明lzma已经成功导入到python里了。其余的各个包也不一定是完全这么做,这只是大体规律参考,具体的看下面,至于确切要 install 怎样的包要自己去查看官方文档了。
具体步骤 reference:
解决No module named '_ssl'
因为无法导入ssl,使用pip3安装虚拟环境virtualenv失败了,所以我先解决这个
1、安装openssl,和libssl-dev
sudo aptitude install openssl
sudo aptitude install libssl-dev
2、进入python3.6.6解压目录,配置文件中增添--with-ssl参数,再次进行编译安装
cd ~/software/Python3.6.6
./configure --with-ssl
make
sudo make install
3、测试是否能正常导入ssl
Python 3.6.6
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
>>>
这次没有报错,可以正常导入
sudo pip3 install virtualenv
virtualenv --version
16.0.0
虚拟环境也安装成功了
No module named '_ssl'问题解决。
解决No module named '_tkinter'
1、安装python3-tk,和tk-dev
sudo aptitude install python3-tk
sudo aptitude install tk-dev
注意这里因为是python3环境,所以是安装python3-tk
如果是python2环境,是安装python-tk
2、进入python3.6.6解压目录,再次进行编译安装
cd ~/software/Python3.6.6
./configure
make
sudo make install
进行构建测试make test时,就可以看到
The necessary bits to build these optional modules were not found:
_bz2 _curses _curses_panel
_dbm _gdbm _lzma
_sqlite3 readline
No module named 'ssl' ‘No module named 'tkinter' 的提示也已经没有了
tests skipped的提示也减少到19,之前为23
3、测试是否能正常导入tkinter
Python 3.6.6
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>>
没有报错,导入成功
解决No module named '_sqlite3'
在3.6.6上导入sqlite3的包,使用上面apt安装的方法直接安装,然后对python再次编译安装的方法,已经无效了。
所以需要要手动进行sqlite3的源代码安装
源代码下载地址:
https://www.sqlite.org/2018/sqlite-autoconf-3240000.tar.gz
根据时间而定,可以自行去官网下最新的
https://www.sqlite.org/
1、解压下载的源代码压缩包到指定目录(根据个人习惯而定
tar -zxvf sqlite-autoconf-3240000.tar.gz -C ~/software
2、进入刚刚解压出的源代码目录中,进行配置,将sqlite3安装到指定目录,方便下一步设置
cd ~/software/sqlite-autoconf-3240000
./configure --prefix=/usr/local/sqlite3
make
sudo make install
3、进入python3解压目录,修改setup.py,增添一条路径
cd ~/software/Python3.6.6 #进入目录
ls # 查看目录中文件及目录列表
vim setup.py # vim打开文件setup.py
/sqlite # 定位文档中sqlite的位置
# 修改setup.py,列表中增添一条路径 '/usr/local/sqlite3/include',
sqlite_inc_paths = [ '/usr/include',
'/usr/include/sqlite',
'/usr/include/sqlite3',
'/usr/local/include',
'/usr/local/include/sqlite',
'/usr/local/include/sqlite3',
'/usr/local/sqlite3/include', #添加的路径
]
esc:wq #保存退出
4、python3再次编译安装
./configure
make
sudo make install
进行构建测试make test
The necessary bits to build these optional modules were not found:
_bz2 _curses _curses_panel
_dbm _gdbm _lzma
readline
_sqlite3不见了,所以应该是成功了
5、测试是否能正常导入sqlite
Python 3.6.6
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>>
没有报错,导入成功
解决No module named 'readline'
1、寻找依赖包
版本不同,依赖包会改名字,但是一般都包含关键字(就因为这个,走了多少弯路
Ubuntu查找依赖包的网址:https://packages.ubuntu.com/
终端内使用指令:
apt search 关键字
也可以。
2、先安装两个依赖包
sudo aptitude install libncurses5-dev
sudo aptitude install libreadline-dev
3、进入python3.6.6的目录下,再进入Modules目录,修改Setup.dict
vim ~/software/Python3.6.6/Modules/Setup.dist.
# 查找:/readline readline,找到下面这段代码,把前面的注释号去掉(去掉#号
readline readline.c -lreadline -ltermcap
#退出保存,回到上一级目录
esc:wq
cd ..
4、python3再次编译安装
./configure
make
sudo make install
进行构建测试make test,就剩4个了
The necessary bits to build these optional modules were not found:
_bz2 _dbm _gdbm
_lzma
5、测试是否能正常导入readline
Python 3.6.6
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import readline
>>>
没有报错,导入成功
PS:通过readline写脚本,可以在Python命令行中使用 tab 命令补全,以及在vim编辑时自动补全,不过另写一篇吧,连续解决这4个包的问题,用时间太多了,去休息会儿。
解决No module named '_dbm'(基本解决)
1、寻找适合的依赖包
能找到的参考资料很少,只好通过查询相关依赖包,通过解读注释来尝试解决
aptitude search dbm
找到的结果很多,i386版本是32位处理器通用的,我用不到,不用看,根据之前的经验,优先找dev或者devel这种开发版本,找到以下两个包:
clisp-module-gdbm # clisp模块,为GNU添加接口
libgdbm-dev
2、python3再次编译安装
./configure
make
sudo make install
进行构建测试make test,就剩3个了
The necessary bits to build these optional modules were not found:
_bz2 _dbm _lzma
3、测试是否能正常导入dbm gdbm
但是,dbm模块确实已经可以正常导入了
`Python 3.6.6
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import dbm
>>>
因为在python3中,gdbm模块已重命名为dbm.gnu,那么测试导入gdbm
Python 3.6.6
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from dbm import gnu
>>>
都成功导入了,应该是不影响正常使用l,毕竟这时候依赖包最新版本的是针对3.6.5版本,大概是因为这一点差别,所以make test时仍会报错。
The necessary bits to build these optional modules were not found:
_dbm _lzma
解决No module named '_bz2'(未彻底解决)
1、寻找依赖包和源文件
这个能查到的资料,基本都是centos的,想办法自行解决吧
这是bzip的源文件下载地址:http://www.bzip.org/downloads.html
apt工具的安装bzip包,基本没用,安了和没安一样
sudo aptitude installl libzip-dev
2、解压下载的源代码压缩包到指定目录(根据个人习惯而定
tar -zxvf bzip2-1.0.6.tar.gz -C ~/software
3、进入刚刚解压出的源代码目录中,进行配置,将sqlite3安装到指定目录,方便下一步设置
cd ~/software/sqlite-autoconf-3240000
./configure --prefix=/usr/local/sqlite3
make
sudo make install
4、python3再次编译安装
./configure
make
sudo make install
进行构建测试make test,就剩2个了
The necessary bits to build these optional modules were not found:
_dbm _lzma
所以说啊,是否使用apt工具安装,没什么关系OTL
但是啊,虽然在make test中看不到bz2了,在终端尝试导入,依然是不行的
Python 3.6.6
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import bz2
Traceback (most recent call last):
File "", line 1, in
File "/usr/local/lib/python3.6/bz2.py", line 23, in
from _bz2 import BZ2Compressor, BZ2Decompressor
ModuleNotFoundError: No module named '_bz2'
>>>
但是的但是,这时在pycharm中是可以成功导入bz2模块的,真是神奇。。而且即使不对bz2进行源代码安装,pycharm中依然可以导入bz2模块。。。emmmmm
反正就这样吧,我决定回档使用3.6.5,3.6.6在ubuntu18.04上实在太神奇了,有些驾驭不住
补充说明
虽然安装pythoin3.6.6之后,使用命令
pip3 --version
可以看到有安装pip 10.0.1,但是,如果使用pycharm,创建虚拟环境,是会报错的
No module named 'distutils.core'
也就是,没有第三方模块管理工具,并且根据提示也安装不上
此时应退出pycharm,进入终端,安装python3-pip
sudo aptitude install python3-pip
之后在pycharm中根据提示安装工具,就能安装上了
解决No module named '_lzma'
1、安装依赖包
sudo aptitude install python-lzma
sudo aptitude install liblzma-dev
2、进入python3.6.6解压目录,再次进行编译安装
cd ~/software/Python3.6.6
./configure
make
sudo make install
3、测试是否能正常导入lzma
Python 3.6.6
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import lzma
搞定了所有缺失的这些包后,就继续在 make 步骤往后走
make install
先找的python3.7解释器位置,一般是
/usr/local/bin/python3.7
删除原来的软连接
rm -rf /usr/bin/python3
rm -rf /usr/bin/pip3
#添加python3的软链接
ln -s /usr/local/bin/python3.7 /usr/bin/python3
#添加 pip3 的软链接
ln -s /usr/local/bin/pip3.7 /usr/bin/pip3
暂时不建议重新安装python3.7,毕竟能升级干嘛要额外安装来浪费空间?而且我尝试了几篇感觉靠谱的安装python3.7文章都不行,(感觉现在csdn有不少文章质量不行啊)不过这reference:https://blog.csdn.net/qq_39493421/article/details/85802306 我只是做到了上面那一段就足够了,他的报错我没遇到,就不往下走了。但是此时我已经可以可以在终端输入python3来进入python3.7的命令界面,说明升级成功了。
但是sudo pip3 install mitmproxy 报错了:
subprocess.CalledProcessError: Command ‘(‘lsb_release’, ‘-a’)’ returned non-zero exit status 1.
解决方法分别输入以下2个命令(我搜csdn搜不到,但是搜百度搜到了,但是链接居然是csdn的,你说这是为什么?):
find / -name lsb_release
rm -rf /usr/bin/lsb_release
reference
再次输入 sudo pip3 install mitmproxy
报错就消失了,具体原因好像是缺少,反正解决了,当然可能期间我也尝试了好些其它方法,导致我的环境和你们按照我这样做的有出入,但是目前我认为最有效果的就这3篇文章,我成功安装了mitmproxy,输入 mitmproxy --version 即可查看是否安装成功。
python@ubuntu:~$ mitmproxy --version
Mitmproxy: 4.0.4
Python: 3.7.1rc2
OpenSSL: OpenSSL 1.1.0i 14 Aug 2018
Platform: Linux-4.4.0-31-generic-x86_64-with-debian-stretch-sid
但是我在这个过程中遇到的问题。
你觉得好就不要吝啬你的赞,大家遇到什么问题或者有更好的解决方案希望能给我提一下,我好整理起来造福更多程序员,毕竟环境这问题实在麻烦,要是遇到错误的指导方法还会有更多的麻烦,二叉树式解决报错让人很烦。
在解决这问题后却产生了一个目前还未解决的新问题:无法直接点击终端打开,只能在文件夹里右键打开终端,求高人指点。