您的位置:首页 > 编程语言 > Python开发

Windows下安装mysql-python(MySQLdb)诺干问题及解决方法

2013-09-04 12:56 1311 查看
有必要记录一下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 connectorlibs for MySQL.
2
connector
=
C:\Program
Files\MySQL\Connector C
6.0
.
2
2.接着同样在根目录下更改文件setup_windows.py,找到如下内容:

1
include_dirs
=
[
os.path.join(mysql_root,r
'include'
)
]:
并在其后添加:

1
include_dirs
=
[
os.path.join(options[
'connector'
],
r
'include'
)
]
3.另外在:

1
library_dirs
=
[
os.path.join(mysql_root,r
'lib\opt'
)
]
之后添加:

1
library_dirs
=
[
os.path.join(options[
'connector'
],
r
'lib\opt'
)
]
4.最后的文件更改如下:

1
library_dirs
=
[
os.path.join(mysql_root,r
'lib\opt'
)
]
2
library_dirs
=
[
os.path.join(options[
'connector'
],
r
'lib\opt'
)
]
3
libraries
=
[
'kernel32'
,
'advapi32'
,
'wsock32'
,
client ]
4
include_dirs
=
[
os.path.join(mysql_root,r
'include'
)
]
5
include_dirs
=
[
os.path.join(options[
'connector'
],
r
'include'
)
]
6
extra_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的文章
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: