天天看點

tornado Python mysql_關于Python的幾個過坑指南(MySQL-python、tornado)

最近碰到的Python項目中,需要安裝MySQL-python依賴,并且項目使用tornado,以下是記錄在其中碰到的坑。

0x01 tornado在render渲染html頁面時報錯

通路頁面時伺服器響應500,檢視錯誤日志,提示:'utf8' codec can't decode byte 0xbf in position 15:invalid start byte

疑惑了很久檔案編碼格式等,後來debug跟蹤發現錯誤,是項目路徑出現問題,最好不要在包含中文路徑中:

snipaste20180809_155405.png

0x02 MySQL-python 1.2.3安裝

項目需要使用MySQL-python 1.2.3,然而通過pip安裝會一直失敗:

snipaste20180809_155857.png

似乎是系統資料庫中找不到某個值

可以通過以下步驟解決:

1、使用要安裝的python環境運作此腳本:register.py#!/usr/bin/env python# -*- coding:utf-8 -*-import sysfrom _winreg import *# tweak as necessaryversion = 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():

try:

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 "*** 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 "*** Unable to register!"

print "*** You probably have another Python installation!"RegisterPy()

snipaste20180809_160020.png

作者:日生三金

連結:https://www.jianshu.com/p/1d14324eb584