python 在venv中报错 ModuleNotFoundError: No module named 'MySQLdb'

环境

Win7,Python 3.6.5,

情况

脚本中有import MySQLdb 直接执行可以执行,但是在创建的venv 中执行,执行失败提示ModuleNotFoundError: No module named 'MySQLdb'。运行pip install MySQLdb 报错提示:


(prod) D:\mysite\crawler>python
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 16:07:46) [MSC v.1900 32 bit (Inte
l)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

(prod) D:\mysite\crawler>python parse_content.py
Traceback (most recent call last):
  File "parse_content.py", line 3, in <module>
    from model import article as article_model, \
  File "D:\mysite\crawler\model\__init__.py", line 3, in <module>
    import MySQLdb
ModuleNotFoundError: No module named 'MySQLdb'


(prod) D:\mysite\crawler>pip install MySQLdb
Collecting MySQLdb
  Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))
 after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.or
g', port=443): Read timed out. (read timeout=15)",)': /simple/mysqldb/
  Could not find a version that satisfies the requirement MySQLdb (from versions
: )
No matching distribution found for MySQLdb



(prod) D:\mysite\crawler>pip search mysqldb
mysqldb-rich (2.4)     - rich mysqldb
Flask-MySQLdb (0.2.0)  - MySQLdb extension for Flask
lurker (0.1)           - a tiny wrapper for mysqldb
mysqldbhelper (1.0.2)  - A simple wrapper over mysqldb
umysqldb (1.0.3)       - MySQLdb compatible wrapper for ultramysql
tomdb (0.5.1)          - A simple wrapper around MySQLdb and pymysql.
mandb (0.1.4)          - Mandb is a lightweight wrapper around MySQLdb and
                         sqlite3.
sqlShort (0.3)         - A tiny wrapper for the Python modules MySQLdb and
                         Sqlite
sqlwitch (0.2)         - sqlwitch offers idiomatic SQL generation on top of
                         MySQLdb.
simplemysql (1.25)     - An ultra simple wrapper for Python MySQLdb with very
                         basic functionality
torndb (0.3)           - A lightweight wrapper around MySQLdb.  Originally
                         part of the Tornado framework.
mysql_helper (1.0.0)   - Um módulo para auxiliar operações com o MySQL e
                         MySQLdb

(prod) D:\mysite\crawler>

为何退出这个venv,执行pip install MySQLdb 却又可以了

阅读 9.7k
2 个回答

如果你报的错是这个

 Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))
 after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.or
g', port=443): Read timed out. (read timeout=15)",)': /simple/mysqldb/
  Could not find a version that satisfies the requirement MySQLdb (from versions
: )

你可以尝试加大超时时间

pip --default-timeout=100 install MySQLdb

个人建议换源(清华),速度也会加快

pip install --index https://mirrors.ustc.edu.cn/pypi/web/simple/ virtualenv 

包名称错了。

在可以导入 MySQLdb 的环境中,通过 MySQLdb.__file__ 属性可查出包名。

一般使用 pip install mysqlclient 安装该模块,而 windows 系统一般下载二进制安装文件,省去编译过程。

请参考 https://github.com/PyMySQL/my...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题