解决windows安装python+mysqldb各种坑
1.pip 安装
E:\Code\Python\mysql>setup.py install
Traceback (most recent call last):
File "E:\Code\Python\mysql\setup.py", line 15, in <module>
metadata, options = get_config()
File "E:\Code\Python\mysql\setup_windows.py", line 7, in get_config
serverKey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, options['registry_key'])
WindowsError: [Error 2]
这个必然出现
网上找到方法,安装MySQL,并将Mysql的bin,添加到path中,安装即可。这个没试过不知道是否可以
2.exe方式安装
-
(32位系统不会)如果你下载的链接是 : https://pypi.python.org/pypi/MySQL-python/1.2.5 安装的时候之后,启动项目你会发现
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb2 in position 0: ordinal not in range
解决办法:
1.打开python的Lib文件夹下的 mimetypes.py,找到 ‘default_encoding = sys.getdefaultencoding()’。在这行前面添加三行
if sys.getdefaultencoding() != 'gbk': reload(sys) sys.setdefaultencoding('gbk')
如果1还是解决不了,不妨试试第二种: 到下面的网址下载,对应系统位数的版本安装包
http://www.codegood.com/downloads
3.对于exe安装时,出现的,无法找到python的registry问题的解决方法
# -*- coding: utf-8 -*-
"""
@author: lifaxin @ 2015-12-21
"""
from _winreg import *
import sys
version = sys.version[:3]
installpath = sys.prefix
regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version)
installkey = "InstallPath"
pythonkey = "PythonPath"
pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % (
installpath, installpath, installpath
)
def RegisterPy():
print "begin RegisterPy "
try:
print "open key : %s"%regpath
reg = OpenKey(HKEY_CURRENT_USER, regpath)
except EnvironmentError as e:
try:
reg = CreateKey(HKEY_CURRENT_USER, regpath)
SetValue(reg, installkey, REG_SZ, installpath)
SetValue(reg, pythonkey, REG_SZ, pythonpath)
CloseKey(reg)
except:
print "*** EXCEPT: Unable to register!"
return
print "--- Python", version, "is now registered!"
return
if (QueryValue(reg, installkey) == installpath and
QueryValue(reg, pythonkey) == pythonpath):
CloseKey(reg)
print "=== Python", version, "is already registered!"
return CloseKey(reg)
print "*** ERROR:Unable to register!"
print "*** REASON:You probably have another Python installation!"
#delete registry
def UnRegisterPy():
try:
print "open HKEY_CURRENT_USER key=%s"%(regpath)
reg = OpenKey(HKEY_CURRENT_USER, regpath)
except EnvironmentError:
print "*** Python not registered?!"
return
try:
DeleteKey(reg, installkey)
DeleteKey(reg, pythonkey)
DeleteKey(HKEY_LOCAL_MACHINE, regpath)
except:
print "*** Unable to un-register!"
else:
print "--- Python", version, "is no longer registered!"
if __name__ == "__main__":
RegisterPy()