linux/ubuntu 安装mitmproxy的过程及解决方案(升级为python3.7及解决pip报错),亲自操作过有效!

2023-05-16

打开终端输入 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 "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/bz2.py", line 23, in <module>
    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

但是我在这个过程中遇到的问题。
你觉得好就不要吝啬你的赞,大家遇到什么问题或者有更好的解决方案希望能给我提一下,我好整理起来造福更多程序员,毕竟环境这问题实在麻烦,要是遇到错误的指导方法还会有更多的麻烦,二叉树式解决报错让人很烦。

在解决这问题后却产生了一个目前还未解决的新问题:无法直接点击终端打开,只能在文件夹里右键打开终端,求高人指点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux/ubuntu 安装mitmproxy的过程及解决方案(升级为python3.7及解决pip报错),亲自操作过有效! 的相关文章

  • webstorm手动更新软件

    webstorm手动更新软件 打开软件 xff0c 进入设置settings搜索Updates点击check now按弹出框内容点击 下载更新
  • vue elementUI点击按钮复制表格某列的链接

    vue elementUI点击按钮复制表格某列链接 lt el table data 61 34 gridData 34 size 61 34 mini 34 gt lt el table column type 61 34 selecti
  • vue 列表进行拖拽排序

    文章为记录项目 需引入插件vuedraggable handle 61 34 mover 34 为绑定拖拽图标的类名 xff0c 即可只能在图标上才可拖拽 lt el form item label 61 34 34 gt lt ul cl
  • vue elementui表单验证

    this refs form validateField 39 type 39 只为项目记录 这个代码为对部分表单字段进行校验的方法
  • element ui分开的开始结束日期验证

    废话不多说直接上代码 lt el form v show 61 34 showSearch 34 ref 61 34 queryForm 34 model 61 34 queryParams 34 inline 61 34 true 34
  • ant.design pro表格序号自定义,翻页也可按顺序来

    title 39 序号 39 dataIndex 39 index 39 valueType 39 indexBorder 39 width 48 hideInSearch true render text record index 61
  • ant.design pro 发布时间对应两个参数值

    title 39 时间 39 dataIndex 39 deployTime 39 valueType 39 dateRange 39 hideInSearch false render record 61 gt lt span gt re
  • 微信小程序图片水印添加

    js getCanvasOne url var mycenter 61 0 文字左右居中显示 var myheight 61 0 文字高度 const that 61 this const query 61 wx createSelecto
  • anaconda出现CondaHTTPError问题解决办法

    一 condarc xff08 conda 配置文件 xff09 Configuration Conda documentation condarc以点开头 xff0c 一般表示 conda 应用程序的配置文件 xff0c 在用户的家目录
  • 使用kalibr标定imu

    这种方法需要在ubuntu中安装matlab 本人只标定的imu 没有和摄像头联合标定 xff0c 方法和imu utils类似 xff0c 先用ros记录imu数据 xff0c 在通过kalibr来计算随机游走误差和高斯白噪声误差 1 首
  • 联合标定双目相机和imu,使用工具Kalibr

    文章目录 imu标定 xff0c 产生数据写入imu yaml中 xff0c 见下文 xff0c imu yaml文件要用于联合标定 双目相机标定 xff0c 产生数据文件用于联合标定 xff0c 文件名类似camchain homeubu
  • matlab从txt文件中提取出有效信息

    背景 从一份txt文件中筛选出有效信息 xff0c txt文件有非常多行 xff0c 依靠关键字筛选出有效行 xff0c 并从行中提取有效信息 test txt文件例如 xff1a aaa 1 2 3 valid 0 1 0 2 0 3 a
  • Python 基础 第一天

    print 34 Hello World 34 print 34 你好 xff0c 世界 34 在 Python 中以单下划线 xff08 xff09 开头命名的标识符 表示不能直接访问的类属性 xff0c 以双下划线 xff08 xff0
  • Python 基础 第二天

    import random import math 集合 xff08 set xff09 是一个无序的不重复元素序列 可以使用 或 set 函数创建集合 值得注意的是 一个空集合必须用set xff0c 使用 创建时会创建一个空字典 bas
  • Django 第六天

    Django高级扩展 静态文件 xff1a css xff0c js xff0c 图片 xff0c Json文件 xff0c 字体文件等 配置settings py xff1a STATICFILES DIRS span class tok
  • Python 爬虫 小练习

    获得某易云音乐 对应歌单下的所有歌曲的歌曲 专辑图片 歌手图片 lrc歌词 span class token keyword import span requests span class token keyword from span b
  • 免费GPU

    中国移动免费GPU资源 九天 毕昇还属于内侧阶段 xff0c 没有充值入口 没有GPU算力的同学可以体验一下 xff0c 不算广告 xff0c 纯属安利羊毛 引言 最近想跑一个模型 xff0c 但突然发现手头没有可用的算力了 然后朋友推荐了
  • 分布式 ROS PX4 GAZEBO 多机仿真 服务器-客户端模式

    这是一个目录 最终目标环境配置要求具体实施方案UAV0配置UAV1配置 执行 最终目标 实现主从机器多机仿真 xff0c 模拟真机部署 具体方案如下 xff1a 设定一台计算机为通信汇集节点 xff0c 处理所有无人机位姿 移动控制等 xf
  • 算法训练 最短路

    算法训练 最短路 问题描述 给定一个n个顶点 xff0c m条边的有向图 xff08 其中某些边权可能为负 xff0c 但保证没有负环 xff09 请你计算从1号点到其他点的最短路 xff08 顶点从1到n编号 xff09 输入格式 第一行
  • Ubuntu18开启ssh服务

    Ubuntu默认不会开启ssh服务 所以我们无法对Ubuntu进行远程连接 xff0c 这对Ubuntu的运维造成了很大不便 本文详细讲解如何在Ubuntu18下开启ssh服务 关键指令 root用户下 xff0c 非root用户所有指令前

随机推荐