ImportError: No module named 'distutils.version'?

1、我使用 mitmproxy 中的 mitmdump 进行抓取数据时,报了个错误,一直查找解决分案,报错信息如下

C:\Windows\System32>mitmdump -s E:\Python开发\DataTest\酷狗\KGRequestProvider.py
Loading script: E:\Python开发\DataTest\酷狗\KGRequestProvider.py
Script error: Traceback (most recent call last):
  File "E:\Python开发\DataTest\酷狗\KGRequestProvider.py", line 10, in <module>
    import redis
  File "C:\Users\youziku\AppData\Roaming\Python\Python36\site-packages\redis\__init__.py", line 1, in <module>
    from redis.client import Redis, StrictRedis
  File "C:\Users\youziku\AppData\Roaming\Python\Python36\site-packages\redis\client.py", line 12, in <module>
    from redis.connection import (ConnectionPool, UnixDomainSocketConnection,
  File "C:\Users\youziku\AppData\Roaming\Python\Python36\site-packages\redis\connection.py", line 2, in <module>
    from distutils.version import StrictVersion
ImportError: No module named 'distutils.version'

2、这个是我引用的模块,并且我发现我是可以引入 from distutils.version import StrictVersion 包

import sys
sys.path.append('C:\\Users\\youziku\\AppData\\Roaming\\Python\\Python36\\site-packages')
import json
import redis

3、Python 版本如下

C:\Windows\System32>python -V
Python 3.6.3

4、redis 版本如下

C:\Windows\System32>pip show redis
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
Name: redis
Version: 3.5.2
Summary: Python client for Redis key-value store
Home-page: https://github.com/andymccurdy/redis-py
Author: Andy McCurdy
Author-email: sedrik@gmail.com
License: MIT
Location: c:\users\youziku\appdata\roaming\python\python36\site-packages
Requires:
Required-by: scrapy-redis

1、到目前我止,我试过升级 redis 版本 ,pip 版本,但是都不管用。我猜测肯能是 redis 模块与 python 模块的问题。
2、我不使用 mitmdump 运行 python 程序时,redis 是可以添加数据的
3、已经在网上搜索了相关问题,但是资料很少。

Jason990420
最佳答案

看不出来哪里有问题,难不成 mitmdump 调用的不是你的 python 3.6.3 ?

mitmdump -s test.py

# test.py
import distutils
print(distutils.__path__)

import redis

检查一下,distutils.__path__ 目录对不对,底下有没有 version.py ??

4年前 评论
260686180 (楼主) 4年前
260686180 (楼主) 4年前
Jason990420 (作者) 4年前
260686180 (楼主) 4年前
Jason990420 (作者) 4年前
Jason990420 (作者) 4年前
260686180 (楼主) 4年前
Jason990420 (作者) 4年前
讨论数量: 1
Jason990420

看不出来哪里有问题,难不成 mitmdump 调用的不是你的 python 3.6.3 ?

mitmdump -s test.py

# test.py
import distutils
print(distutils.__path__)

import redis

检查一下,distutils.__path__ 目录对不对,底下有没有 version.py ??

4年前 评论
260686180 (楼主) 4年前
260686180 (楼主) 4年前
Jason990420 (作者) 4年前
260686180 (楼主) 4年前
Jason990420 (作者) 4年前
Jason990420 (作者) 4年前
260686180 (楼主) 4年前
Jason990420 (作者) 4年前