mysql-python安装的各种坑

本文详细记录了在Virtualenv环境下使用pip安装MySQL-python模块时遇到的问题及其解决方案,包括找不到包、编译器缺失、配置文件缺失等常见问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有必要记录一下Virtualenv中,用PIP进行包安装遇到诸多问题及解决办法,否则以我健忘的性格,过后肯定又不记得自己是如何解决的了。以MySQL-python为例,但是与其他模块的错误应该也有共同之处的。

本人系统:Win7 64bit +python2.7+MySQL5.5+Virtualenv

问题1.各类找不到包的问题

仔细检查pip install package-name中package-name的包名是否输入有误。

问题2.

Traceback (most recent call last):
 File "setup.py", line 15, in <module>
 metadata, options = get_config()
 File "F:\python\virtualenv\test\build\MySQL-python-1.2.3\setup_windows.py", li
ne 7, in get_config
 serverKey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, options['registry_ke
y'])
WindowsError: [Error 2]

问题根源:Mysql-python无法找到所述版本的mysql。

解决办法:如果使用pip进行安装,则在virtualenv创造出的沙盒的目录下,build文件夹中找到mysql-python的安装包,然后找到安装包目录下的site.cfg文件,文件的最后一行中有mysql的版本,更改为自己的版本号即可。

问题3.

cannot find vcvarsall.bat

问题根源:缺少C++的编译器

解决办法1:安装Mingw32(Minimalist GNU For Windows)。这是此方法本人使用不成功,可能是因为我的是win7 64bit的原因,而我没有找到适合64位的编译器。32bit的应该是可以成功,详见文章:http://julabs.me/blog/python/unable-to-find-vcvarsall-bat/

解决办法2:安装vs2008 express,这个是我推荐的办法,因为vs2008的express c++版本的不大,安装也很快,之后的很多python包都需要vs2008版本的c++编译器,因此,安装一下还是有必要的。下载地址。安装完毕后即可进行MySQL-python的安装了。

问题4.

_mysql.c(34) : Fatal error C1083: Cannot open include file: 'config-win.h': No such file or directory

问题根源:Mysql5.5版本更新以后,config-win.h文件已经被移位了,被分离到了连接器(Connector)中,例如路径:C:\Program Files\MySQL\Connector C 6.0.2\include。因此,Mysql-python已经不能正确找到这个文件,因此安装失败。

解决办法:

1.首先更改包根目录下site.cfg文件,添加内容:

1# Windows connector libs for MySQL.
2connector = C:\Program Files\MySQL\Connector C 6.0.2

2.接着同样在根目录下更改文件setup_windows.py,找到如下内容:

1include_dirs = [ os.path.join(mysql_root, r'include') ]:

并在其后添加:

1include_dirs = [ os.path.join(options['connector'], r'include') ]

3.另外在:

1library_dirs = [ os.path.join(mysql_root, r'lib\opt') ]

之后添加:

1library_dirs = [ os.path.join(options['connector'], r'lib\opt') ]

4.最后的文件更改如下:

1library_dirs = [ os.path.join(mysql_root, r'lib\opt') ]
2library_dirs = [ os.path.join(options['connector'], r'lib\opt') ]
3libraries = [ 'kernel32', 'advapi32', 'wsock32', client ]
4include_dirs = [ os.path.join(mysql_root, r'include') ]
5include_dirs = [ os.path.join(options['connector'], r'include') ]
6extra_compile_args = [ '/Zl' ]

问题5.

各种连接错误例如LNK2019 无法解析的外部符号之类的。

问题原因:能力有限,未知。

解决办法:最最最无耻的解决办法,由于在Virtualenv下安装包确实会出现各种古里古怪的问题,因此,只有一个最终的绝招了。拿Mysql-python为例。Mysql-python的制作者估计知道windows下安装有多么的困难,因此,在Windows下有提供exe安装包,下载地址。下载完成后,安装。由于这个安装包只读取注册表下的Python安装目录,因此,安装目标是我们本机的Python环境,而不是Virtualenv的安装环境,怎么解决呢?其实很简单,安装完毕后,找到本机的Python安装目录下的包目录,以我本机为例:C:\Python27\Lib\site-packages。在这个目录下找到Mysql相关的文件及文件夹,一共有6个:

MySQL_python-1.2.3-py2.7.egg-info(文件夹)
MySQLdb(文件夹)
_mysql.pyd
_mysql_exceptions.py
_mysql_exceptions.pyc
_mysql_exceptions.pyo

将这些文件及文件夹复制到Virtualenv所创建的沙盒的Lib\site-packages文件夹下即可。这种方法在目前的使用中,我还没发现有什么问题。

最后贴一下参考网站以做备用:

Stackoverflow中关于config-win.h丢失的解决 。

VS2008 Express下载地址

MySQL-python Windows安装程序

vcvarsall.bat丢失的解决办法(mingw32)

国外某Blog关于在Windows下安装Mysql-python的文章

<think>嗯,用户这次的需求很明确:想找结合MySQLPython的开源项目源码,特别是GitHub上的示例。从用户提到的关键词"mysqlpython项目源码github示例"来看,ta应该是个开发者,想找实战参考资源。用户之前提到过四个参考引用,不过只有引用1和4直接相关MySQL操作,引用3提到的joblib并行计算可能对数据库批量处理有帮助。用户明显跳过了这些片段直接要项目源码,说明ta需要的是完整项目而非代码片段。考虑到Python+MySQL的常见应用场景,准备给ta推荐几个方向:首先是ORM工具相关的,因为所有数据库项目都会用到;然后是博客/CMS系统,这类项目数据库结构典型;数据分析和爬虫项目也值得推荐,因为MySQL常作数据存储。每个推荐都选GitHub上star高、文档完善的项目,这样用户容易上手。特别要注意的是,用户要的是"源码示例",所以除了项目链接,还应该说明它们的核心代码目录结构。比如Django项目的models.py和views.py位置,这样用户能快速定位。另外想到用户可能遇到的:比如Python环境配置(引用2提到过缺少Python.h的错误)、数据库连接异常处理(引用4的try-except示例),所以在注意事项里专门列出,并关联引用源。这样既解决当前需求,又预防后续问题。</think> 以下是精选的 GitHub 开源项目及其核心代码示例(均含 **MySQL + Python** 完整源码): --- ### 一、知名开源项目推荐 #### 1. [Django Blog(基于Django的博客系统)](https://github.com/saadq/django-blog) **核心模块**: ```python # blog/models.py from django.db import models from django.contrib.auth.models import User class Post(models.Model): title = models.CharField(max_length=100) content = models.TextField() author = models.ForeignKey(User, on_delete=models.CASCADE) # 关联MySQL用户表 created_at = models.DateTimeField(auto_now_add=True) # 数据库操作示例 post = Post(title="Hello MySQL", content="Using Django ORM", author=request.user) post.save() # 自动生成INSERT语句 ``` **特点**:完整MVC架构,包含用户认证、文章管理(MySQL存储)。 #### 2. [Flask MySQL CRUD示例](https://github.com/techwithtim/Flask-Web-App-Tutorial) **数据库操作代码**: ```python # app.py import pymysql from flask import Flask app = Flask(__name__) # 连接MySQL配置 app.config['MYSQL_HOST'] = 'localhost' app.config['MYSQL_USER'] = 'user' app.config['MYSQL_PASSWORD'] = 'password' app.config['MYSQL_DB'] = 'mydb' # 查询示例 @app.route('/users') def users(): cur = mysql.connection.cursor() cur.execute("SELECT * FROM users") # 执行原生SQL data = cur.fetchall() # 获取结果 cur.close() return str(data) ``` #### 3. [数据分析项目:MySQL + Pandas](https://github.com/jakevdp/PythonDataScienceHandbook) **数据入库示例**: ```python import pandas as pd import pymysql from sqlalchemy import create_engine # 创建MySQL连接引擎 engine = create_engine('mysql+pymysql://user:password@localhost/db_name') # 将DataFrame写入MySQL df = pd.DataFrame({'col1': [1, 2], 'col2': ['a', 'b']}) df.to_sql('table_name', con=engine, if_exists='replace') # 自动建表 ``` --- ### 二、项目搜索技巧(GitHub) 1. **关键词组合**: `mysql python stars:>500`(筛选高星项目) `mysql django OR flask in:readme`(在README中搜索) 2. **按技术栈过滤**: `topic:mysql topic:python` `language:python database:mysql` --- ### 三、重要注意事项 1. **依赖安装**: 务必安装MySQL驱动(参考引用[^1][^2]): ```bash pip install pymysql # 或 mysqlclient ``` 若遇 `Python.h` 缺失错误(引用[^2]),需安装: ```bash sudo apt-get install python3-dev libmysqlclient-dev # Ubuntu ``` 2. **数据库连接安全**: ```python # 使用环境变量存储密码(避免硬编码) import os db_password = os.environ['DB_PASSWORD'] ``` 3. **异常处理**(引用[^4]): ```python try: conn = pymysql.connect(host='localhost', user='root', password='xxx', database='test') except pymysql.MySQLError as e: print(f"数据库连接失败: {e.args[1]}") ``` --- ### 四、拓展项目方向 | 类型 | 项目示例 | |---------------------|-------------------------------------------------------------------------| | **电商系统** | [Saleor](https://github.com/saleor/saleor) (Django + GraphQL + MySQL) | | **内容管理 CMS** | [Wagtail](https://github.com/wagtail/wagtail) (Django CMS) | | **任务队列** | [Celery + MySQL](https://github.com/celery/celery/tree/main/examples) | | **爬虫存储** | [Scrapy + MySQL Pipeline](https://github.com/scrapy/quotesbot) | --- 通过上述项目源码和技巧,您可直接运行完整应用,或参考其架构实现自定义需求。建议从 Flask/Django 基础项目开始实践(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值