首页 > 数据库 >Windows下安装mysql-python(MySQLdb)问题记录

Windows下安装mysql-python(MySQLdb)问题记录

时间:2022-12-16 11:33:29浏览次数:82  
标签:lib Windows py mysql python MySQLdb MySQL

今天太倒霉了,这篇文章马上就要写完了,结果火狐崩溃了,而且csdn居然没有自动保存,只有上午的有记录;想到这个安装 的问题也折腾哥快一天了,还是再次打字把问题记录下吧,我就喜欢偏向虎山行,不让我记,休想!

之前学习web.py的tutorial 时,练习到数据库时,就没有继续下去,今天反正有空,就顺便想学习下数据库的基本内容,于是安装了mysql,有了下文:

环境:

Win7 32bit +python2.7+MySQL5.5

注意:

python安装中也许已经确认自己安装了某个模块,但是在import时候老是报找不到,那就重启下电脑再import;我已经发现有时候有效。推荐一个很好的已经编译好的模块下载地址:

​Python Extension Packages for Windows - Christoph Gohlke​

省去对某些编译器的依耐


1、安装mysql

首先到mysql官网下载文件:mysql-installer-community-5.5.27.2.msi  安装过程同一般exe文件,不再叙述,直接下一步即可;

2、安装MySQL-python-1.2.3

直接根据web.py给出 的链接,下载文件MySQL-python-1.2.3.tar.gz 解压到任意目录

然后在cmd命令行行下进行安装;

C:\...> python setup.py install
C:\...> python setup.py bdist_wininst

执行第一句后出现报错如下:

C:\mywork\MySQL_python\MySQL-python-1.2.3>python setup.py install

Traceback (most recent call last):


  File "setup.py", line 15, in <module>


    metadata, options = get_config()


  File "C:\mywork\MySQL_python\MySQL-python-1.2.3\setup_windows.py", line 7, in


get_config


    serverKey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, option

s['registry_ke

y'])

WindowsError: [Error 2]


上述报错原因在:

On Windows, you will definitely have to edit site.cfg since there is
no mysql_config in the MySQL package.

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

在MySQL-python-1.2.3安装包目录下找到site.cfg文件,文件的最后一行中有mysql的版本,更改为自己的版本号即可

如下:

# Only change this if you have a different version.
registry_key = SOFTWARE\MySQL AB\MySQL Server 5.5

再次进行安装;

出现如下报错情况:

C:\mywork\MySQL_python\MySQL-python-1.2.3>python setup.py install


running install


running bdist_egg


running egg_info


writing MySQL_python.egg-info\PKG-INFO


writing top-level names to MySQL_python.egg-info\top_level.txt


writing dependency_links to MySQL_python.egg-info\dependency_links.txt


reading manifest file 'MySQL_python.egg-info\SOURCES.txt'


reading manifest template 'MANIFEST.in'


warning: no files found matching 'MANIFEST'


warning: no files found matching 'ChangeLog'


warning: no files found matching 'GPL'


writing manifest file 'MySQL_python.egg-info\SOURCES.txt'


installing library code to build\bdist.win32\egg


running install_lib


running build_py


creating build


creating build\lib.win32-2.7


copying _mysql_exceptions.py -> build\lib.win32-2.7


creating build\lib.win32-2.7\MySQLdb


copying MySQLdb\__init__.py -> build\lib.win32-2.7\MySQLdb


copying MySQLdb\converters.py -> build\lib.win32-2.7\MySQLdb


copying MySQLdb\connections.py -> build\lib.win32-2.7\MySQLdb


copying MySQLdb\cursors.py -> build\lib.win32-2.7\MySQLdb


copying MySQLdb\release.py -> build\lib.win32-2.7\MySQLdb


copying MySQLdb\times.py -> build\lib.win32-2.7\MySQLdb


creating build\lib.win32-2.7\MySQLdb\constants


copying MySQLdb\constants\__init__.py -> build\lib.win32-2.7\MySQLdb\constants


copying MySQLdb\constants\CR.py -> build\lib.win32-2.7\MySQLdb\constants


copying MySQLdb\constants\FIELD_TYPE.py -> build\lib.win32-2.7\MySQLdb\constants



copying MySQLdb\constants\ER.py -> build\lib.win32-2.7\MySQLdb\constants


copying MySQLdb\constants\FLAG.py -> build\lib.win32-2.7\MySQLdb\constants


copying MySQLdb\constants\REFRESH.py -> build\lib.win32-2.7\MySQLdb\constants


copying MySQLdb\constants\CLIENT.py -> build\lib.win32-2.7\MySQLdb\constants


running build_ext


building '_mysql' extension


error: Unable to find vcvarsall.bat


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

解决办法1:安装Mingw32(Minimalist GNU For Windows)。网上用的比较多,需要搞gcc编译器,不想安装,没有采用此法,详见文章:​​http://julabs.me/blog/python/unable-to-find-vcvarsall-bat/​​​。​​error: Unable to find​​  ;在python的lib\distutils目次下,找到distutils.cfg文件(若是没有,就创建一个)写入​​[build] 
compiler=mingw32​

​这个对vs不适用,没成功;

解决办法2:安装vs2008 express,vs2008的express c++版本的不大,安装很快,很多python包都需要vs2008版本的c++编译器,因此,安装一下还是有必要的。​​下载地址​​。一定要选择vs20XX版本的c++编译器安装,不要选错了,安装完毕后即可进行MySQL-python的安装了。

出现如下报错:C:\mywork\MySQL_python\MySQL-python-1.2.3>python setup.py install


running install


running bdist_egg


running egg_info


writing MySQL_python.egg-info\PKG-INFO


writing top-level names to MySQL_python.egg-info\top_level.txt


writing dependency_links to MySQL_python.egg-info\dependency_links.txt


reading manifest file 'MySQL_python.egg-info\SOURCES.txt'


reading manifest template 'MANIFEST.in'


warning: no files found matching 'MANIFEST'


warning: no files found matching 'ChangeLog'


warning: no files found matching 'GPL'


writing manifest file 'MySQL_python.egg-info\SOURCES.txt'


installing library code to build\bdist.win32\egg


running install_lib


running build_py


copying MySQLdb\release.py -> build\lib.win32-2.7\MySQLdb


running build_ext


building '_mysql' extension


C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c /nologo /Ox /MD /W


3 /GS- /DNDEBUG -Dversion_info=(1,2,3,'final',0) -D__version__=1.2.3 "-IC:\Progr


am Files\MySQL\MySQL Server 5.5\include" -IC:\Python27\include -IC:\Python27\PC


/Tc_mysql.c /Fobuild\temp.win32-2.7\Release\_mysql.obj /Zl


_mysql.c


_mysql.c(34) : fatal error C1083: 无法打开包括文件

:“config-win.h”: No such fil

e or directory


error: command '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe"' fa


iled with exit status 2


问题根源:

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

解决办法:

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

​​# Windows connector libs for MySQL.​​
​​connector ​​​​=​​​​C:\Program Files\MySQL\Connector C​​​​6.0​​​​.​​​​2​​



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

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


并在其后添加:

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


3.另外在:

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


之后添加:

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


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

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

这次比较顺利的执行完了安装过程,但是安装过程中也出现了一些异常说明


C:\Program Files\MySQL\Connector C 6.0.2\include\config-win.h(24) : warning C400
5: “_WIN32_WINNT”: 宏重定义
        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\sdkddkver.h(151) :
 参见“_WIN32_WINNT”的前一个定义
C:\Program Files\MySQL\Connector C 6.0.2\include\config-win.h(203) : warning C40
05: “SIZEOF_OFF_T”: 宏重定义
        c:\python27\include\pyconfig.h(355) : 参见“SIZEOF_OFF_T”的前一个定义
C:\Program Files\MySQL\Connector C 6.0.2\include\config-win.h(301) : warning C40
05: “HAVE_STDDEF_H”: 宏重定义
        c:\python27\include\pyconfig.h(673) : 参见“HAVE_STDDEF_H”的前一个定义
_mysql.c(1364) : warning C4018: “<”: 有符号/无符号不匹配


再安装执行:python setup.py bdist_wininst


暂时不管了,看下能不能导出包来

>>> import MySQLdb

C:\Python27\lib\site-packages\mysql_python-1.2.3-py2.7-win32.egg\_mysql.py:3: Us
erWarning: Module _mysql was already imported from C:\Python27\lib\site-packages
\mysql_python-1.2.3-py2.7-win32.egg\_mysql.pyc, but c:\mywork\mysql_python\mysql
-python-1.2.3 is being added to sys.path
>>>

看来工作已经正常;

说明:

此前对以上同样的报错还有很多其它版本的说法和修改方式,进行试验后,觉得以我目前的安装配置环境,还是这样修改划得来,其它的如还出现过以下问题:

raise ValueError(str(list(result.keys()))) ValueError: [u'path']  据发现是64 位机出现的问题,我居然也出现了,晕  参见: http://bugs.python.org/issue7511

msvc9compiler.py: ValueError when trying to compile with VC Express 修改编译文件的也有;

安装方法参见:http://blog.victorjabur.com/2011/06/05/compiling-python-2-7-modules-on-windows-32-and-64-using-msvc-2008-express/  写的很详细,参考价值很大;

还有把注册表里VS100COMNTOOLS项改成VS90COMNTOOLS的方法,使用也没有成功!



Mysql-python的制作者估计知道windows下安装有多么的困难,因此,在Windows下有提供exe安装包,​​下载地址​​。下载完成后,安装。由于这个安装包只读取注册表下的Python安装目录,因此,安装目标是我们本机的Python环境

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

​http://cyfloel0516.sinaapp.com/?p=193​

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

​VS2008 Express下载地址​​。

​MySQL-python Windows安装程序​​。

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

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













标签:lib,Windows,py,mysql,python,MySQLdb,MySQL
From: https://blog.51cto.com/u_15797945/5947024

相关文章

  • Windows安装Flink20220915
    1.官方下载地址 https://flink.apache.org/zh/downloads.html#apache-flink-1144  最好用国内镜像下载比较快 下载后对压缩包解压,路径自定义2.安装包中是不含启动bat......
  • python处理word、ppt、excel
    介绍采用python_docx模块处理word文档的基本技巧,特别是图片如何提取和写入。 python_docx模块只能处理docx,不支持doc,如需使用,要进行转换。代码入下:fromwin32comimpor......
  • [读书笔记]Python编程:从入门到实践读后感
    0x00前言说句实在话,你买这本书根本就是一个错误。如果,你只是把它束之高阁,就认为自己学会了Python的话。诚如编辑所言,我自己买下这本书已经有一年多了,但真正把它读起来,......
  • Python 导入模块、文件、包、自定义路径包
    测试环境,假设:主文件绝对路径:/home/ubu/py_test/main.py模块文件:/home/ubu/py_test/con.py模块目录:/home/ubu/py_test/modules/tt.py模块目录:/home/ubu/py_test/modules......
  • CMD窗口运行Python脚本颜色字符乱码问题
    Python脚本在CMD窗口运行的时候,可能会出现这种类型的乱码,最开始还以为是哪里的编码出了问题,尝试把cmd的默认字符集改为了utf-8仍然不行。定位一下乱码的字符位置,发现都是......
  • 如何在windows中安装和使用Linux
    按下键盘的win+x键打开应用和功能,按如图进行下面操作重启电脑后用管理原身份打开cmd窗口,输入以下命令:(官方链接:https://learn.microsoft.com/zh-cn/windows/wsl/basic-......
  • Windows 无法加载这个硬件的设备驱动程序。驱动程序可能已损坏或不见了。 (代码 39)
    哔站中有视频解决方案,可以直观看如何操作:Windows无法加载这个硬件的设备驱动程序。驱动程序可能已损坏或不见了。(代码39)第一步:明确感叹号故障硬件——右键“属性”—......
  • 2.python-练习(日期-函数式编程)
    计算活的天数"""定义函数,根据生日(年月日),计算活了多天"""fromdatetimeimportdatetimedefcalculate_alive_day(year:int,month:int,day:int)->int:......
  • 使用python操作数据库
    importsqlite3conn=sqlite3.connect('mrsoft.db')cursor=conn.cursor()cursor.execute('createtableuser(idint(10)primarykeynamevarchar(20))')cursor.clos......
  • 5.python-函数式编程
    函数式编程(1)定义:用一系列函数解决问题。--函数可以赋值给变量,赋值后变量绑定函数。--允许将函数作为参数传入另一个函数。(2)高阶函数:将函数作为参数或返回值的函数......