Windows11 下运行 proxyPool 记录

配置环境

本文的 ProxyPool 指的是 jhao104/proxy_pool: Python爬虫代理IP池(proxy pool) (github.com) 这个项目,它可以爬取代理网站上提供的公开代理,并在本地启动一个服务作为代理池使用。

注:项目推荐的 Python 版本为 3.6,读者如果遇到了无法解决的问题,可重新安装 Python 3.6 后重试!

我的本地环境:Windows 11,Python 3.10,Redis for Windows 5.0.14.1

项目需要 Redis ,先去 Releases · tporadowski/redis (github.com) 下载,解压后打开 redis-server.exe 即可(注:如果是公网环境,记得设置复杂密码~)

然后修改配置,打开 setting.py​,将数据库连接改好。

# ############### database config ###################
# db connection uri
# example:
#      Redis: redis://:password@ip:port/db
#      Ssdb:  ssdb://:password@ip:port
DB_CONN = 'redis://127.0.0.1:6379/0'

安装依赖:

# 项目根目录下
pip install -r requirements.txt

启动项目:

# 启动调度程序
python proxyPool.py schedule

# 启动webApi服务
python proxyPool.py server

报错 1:ImportError: cannot import name ‘Markup’ from ‘jinja2’

python .\proxyPool.py server ​启动服务报错

ImportError: cannot import name ‘Markup’ from ‘jinja2’ (C:\Users\XXXXXX\AppData\Local\Programs\Python\Python310\lib\site-packages\jinja2__init__.py)

解决方法:pip install Flask==2.1.1 ​安装指定版本 Flask

报错 2:ImportError: cannot import name ‘MutableMapping’ from ‘collections’

python .\proxyPool.py schedule ​启动调度程序报错

ImportError: cannot import name ‘MutableMapping’ from ‘collections’

参见 Python的文档说明

Deprecated since version 3.3, will be removed in version 3.10: Moved Collections Abstract Base Classes to the collections.abc​ module. For backwards compatibility, they continue to be visible in this module through Python 3.9.

解决方法:

打开报错的文件(C:\Users\XXXXX\AppData\Local\Programs\Python\Python310\lib\site-packages\apscheduler\schedulers\base.py),修改 from collections import MutableMapping​​ 为 from collections.abc import MutableMapping​ ​即可。

修改过重新运行,还有个同样的报错,根据报错信息找到 C:\Users\XXXXX\AppData\Local\Programs\Python\Python310\lib\site-packages\apscheduler\job.py 文件再修改一次即可。

重新启动项目,已经可以正常运行 ✅

参考:

ImportError: cannot import name 'Markup' from 'jinja2' · Issue #652 · jhao104/proxy_pool (github.com)

python - cannot import name 'MutableMapping' from 'collections' - Stack Overflow

Python关于ImportError: cannot import name ‘MutableMapping‘ (或者‘Iterable‘ )from ‘collections‘_不会代码的运营不是好的产品的博客-CSDN博客

Release Redis for Windows 5.0.14.1 · tporadowski/redis (github.com)