centos5.8 python 2をアップグレードする.4.3からpython 2.7.8
11638 ワード
メモ:
yum -y groupinstall 'Development Tools'yum -y install openssl-devel* ncurses-devel* zlib*.x86_64yum -y install bzip2 bzip2-devel bzip2-libs
yum -y install sqlite-devel
python 2.7.8のtarをダウンロードgzファイル
./configure --prefix=/usr/local/python && make && make installrm/usr/bin/pythonln -s/usr/local/python/bin/python2.7/usr/bin/python
$python-Vの検証
yumの失効の問題を解決する
# vim/usr/bin/yum #!/usr/bin/pythonを#!/usr/bin/python2.4
-------------------------------
最初にインストールしたpython 2.7.3、インストールに成功した後、djangoを実行中にエラーが発生しました.
ImportError: No module named _sqlite3
ネット上の一般的な解決策に従います.
yum install sqlite-devel
python 2を再インストールしました.7.3、役に立たない--prefix
しかし、この問題は依然として解決されず、python-2.7.3/lib/python 2が見つからなかった.7/lib-dynload/_sqlite3.so.
個人的にはpython 2.7.3のバージョンの問題だと思います.
python 2がインストールする.7.8、依然としてこの問題を解決していないが、python-2.7.8/lib/python 2が存在する.7/lib-dynload/_sqlite3.so.
検証、import sys
print sys.path
参照されるパスがすべて/usr/local/libの下のパスであることを見て、/usr/local/libの下にpythonがある場合、システムは自動的にこのpythonを使用し、あなた--prefixがインストールしたディレクトリのpythonを使用しません.ソフト接続を確立してpython-Vを実行するのはあなたの望む結果ですが.
/usr/local/の下に以前インストールされていたpythonをすべて削除した後、import sqlite 3は正常に動作します.
setuptoolsのインストール
setuptoolsもpipもpythonのモジュールです
setuptoolsをインストールし、setuptoolsのソースコードルートディレクトリの下に入り、setuptoolsモジュールのインストールを行うには、次のコマンドを実行します.
setuptoolsをインストールした後、pipをインストールし、pipのソースパッケージルートディレクトリの下に入り、以下のコマンドを実行してインストールします.
pipをインストール後.pipがどこにインストールされているか見てみましょう.次のコマンドを実行します.
次に#pipコマンドを実行し、車に戻ります.pipコマンドが使用できない場合は、pipソフトリンクを作成して、次のコマンドを実行できます.
pipのソフト接続を使用しない場合は、pipのパスを使用します.
tornadoのインストール
tornadoのソースコードルートディレクトリに入り、setuptoolsモジュールのインストールを行うには、次のコマンドを実行します.
djangoのインストール
djangoのソースコードルートディレクトリに入り、コマンドを実行してdjangoインストールを行います.
jinja 2とsqlalchemyのインストール
paramikoのインストール
xlrd xlwtのインストール(excelを1つ読みexcelを1つ書きexcelを1つ)
mysql-pythonのインストール
インストールPillow(グラフィック処理、プロジェクトは検証コードを生成するために使用され、以下にコードがあります)
mysqlデータベースの符号化はutf-8に設定されています
Pillow生成検証コードのコード例(4ビット)
自分のプログラムの中でログインして認証コードを持ってログインページに現れます
yum -y groupinstall 'Development Tools'yum -y install openssl-devel* ncurses-devel* zlib*.x86_64yum -y install bzip2 bzip2-devel bzip2-libs
yum -y install sqlite-devel
python 2.7.8のtarをダウンロードgzファイル
./configure --prefix=/usr/local/python && make && make installrm/usr/bin/pythonln -s/usr/local/python/bin/python2.7/usr/bin/python
$python-Vの検証
yumの失効の問題を解決する
# vim/usr/bin/yum #!/usr/bin/pythonを#!/usr/bin/python2.4
-------------------------------
最初にインストールしたpython 2.7.3、インストールに成功した後、djangoを実行中にエラーが発生しました.
ImportError: No module named _sqlite3
ネット上の一般的な解決策に従います.
yum install sqlite-devel
python 2を再インストールしました.7.3、役に立たない--prefix
しかし、この問題は依然として解決されず、python-2.7.3/lib/python 2が見つからなかった.7/lib-dynload/_sqlite3.so.
個人的にはpython 2.7.3のバージョンの問題だと思います.
python 2がインストールする.7.8、依然としてこの問題を解決していないが、python-2.7.8/lib/python 2が存在する.7/lib-dynload/_sqlite3.so.
検証、import sys
print sys.path
参照されるパスがすべて/usr/local/libの下のパスであることを見て、/usr/local/libの下にpythonがある場合、システムは自動的にこのpythonを使用し、あなた--prefixがインストールしたディレクトリのpythonを使用しません.ソフト接続を確立してpython-Vを実行するのはあなたの望む結果ですが.
/usr/local/の下に以前インストールされていたpythonをすべて削除した後、import sqlite 3は正常に動作します.
setuptoolsのインストール
setuptoolsもpipもpythonのモジュールです
setuptools : https://pypi.python.org/pypi/setuptools
pip : https://pypi.python.org/pypi/pip#downloads
setuptoolsをインストールし、setuptoolsのソースコードルートディレクトリの下に入り、setuptoolsモジュールのインストールを行うには、次のコマンドを実行します.
# python setup.py install
setuptoolsをインストールした後、pipをインストールし、pipのソースパッケージルートディレクトリの下に入り、以下のコマンドを実行してインストールします.
# python setup.py build
# python setup.py install
pipをインストール後.pipがどこにインストールされているか見てみましょう.次のコマンドを実行します.
# whereis pip
次に#pipコマンドを実行し、車に戻ります.pipコマンドが使用できない場合は、pipソフトリンクを作成して、次のコマンドを実行できます.
# ln -s /usr/local/python/bin/pip /usr/bin/pip
pipのソフト接続を使用しない場合は、pipのパスを使用します.
# /usr/local/python/bin/pip
tornadoのインストール
tornado :http://www.tornadoweb.org/en/stable/
tornadoのソースコードルートディレクトリに入り、setuptoolsモジュールのインストールを行うには、次のコマンドを実行します.
# python setup.py build
# python setup.py install
djangoのインストール
django :https://www.djangoproject.com/
djangoのソースコードルートディレクトリに入り、コマンドを実行してdjangoインストールを行います.
# python setup.py build
# python setup.py install
jinja 2とsqlalchemyのインストール
pip install jinja2
pip install sqlalchemy
paramikoのインストール
pip install paramiko
:
Installing collected packages: ecdsa, pycrypto, paramiko
Running setup.py install for pycrypto
Successfully installed ecdsa-0.13 paramiko-1.15.2 pycrypto-2.6.1
pip , pycrypto paramiko
( paramiko python2.7.8 , )
xlrd xlwtのインストール(excelを1つ読みexcelを1つ書きexcelを1つ)
pip install xlwt
pip install xlrd
xlwt ascii , utf-8 , xlwt :
xlwt/Workbook 55 , Workbook :
/usr/local/python/lib/python2.7/site-packages/xlwt/Workbook.py
def __init__(self, encoding='ascii', style_compression=0):
def __init__(self, encoding='utf-8', style_compression=0):
xlwt
mysql-pythonのインストール
pip install MySQL-python
インストールPillow(グラフィック処理、プロジェクトは検証コードを生成するために使用され、以下にコードがあります)
pip install Pillow
mysqlデータベースの符号化はutf-8に設定されています
CREATE DATABASE `rmdb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
my.conf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
default-character-set=utf8
user=mysql
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[server]
default-character-set=utf8
(tornado )
create_engine("mysql://dusername:dpasswd@localhost/dbname?charset=utf8",encoding='utf-8')
Pillow生成検証コードのコード例(4ビット)
#!/usr/bin/python
#fileencoding:utf-8
from PIL import ImageDraw,ImageFont,ImageFilter
from PIL import Image
import random
import math, string
import os
BASE_DIR = os.path.dirname(__file__)
print BASE_DIR
rootDir = BASE_DIR[0:-15]
fontPath = rootDir+"wqy-zenhei.ttc"
FONT_PATH = fontPath
def initChars():
"""
, 、
usage: initChars()
param: None
return: list
for: picChecker
todo: Nothi
"""
nums = [str(i) for i in range(10)]
letter = "abcdefghijklmnopqrstuvwxyz"
lowerCase = [x for x in letter]
upperCase = [x.upper() for x in lowerCase]
return (nums + lowerCase + upperCase)
class picChecker():
"""
:
1) ,
2) 4 ( , )。
,
( )
usage: pc = picChecker().createChecker()
param: ,
chars ,
list
initChars()
['1','2','3']
length
integer
4
size
tutle
(120,30)
(120,30)
fontsize
integer
25
begin ,
tutle
(5,-2)
outputType
string
GIF
GIF JPEG TIFF PNG
mode
string
RGB L ( , 2 )
RGB
backgroundColor
foregroundColor
mode=RGB ,backgroundColor,foregroundColor tutle
(integer,integer,integer)
RGB
mode=L ,backgroundColor,foregroundColor ,
0-255
fonttype
string
"simsum.ttc"
jamNum
(int1,int1)
int1 ,
int2 ,
pointBorder
:
(int1,int2)
int1
int2
return: [picCheckerStr,pic]
picCheckerStr: , session
pic : , Image
for :
todo : Nothing
"""
def __init__(self, chars = initChars(),
size = (120, 35), fontsize = 25,
begin = (5, -2), outputType = 'GIF',
mode = 'RGB', backgroundColor = (255, 255, 255),
foregroundColor = (0, 0, 255),
fonttype = FONT_PATH, length = 4, jamNum = (1, 2),
pointBorder = (40, 39)
):
self.chars = chars
self.size = size
self.begin = begin
self.length = length
self.outputType = outputType
self.fontsize = fontsize
self.mode = mode
self.backgroundColor = backgroundColor
self.foregroundColor = foregroundColor
self.jamNum = jamNum
self.pointBorder = pointBorder
self.fonttype = fonttype
#self.font = ImageFont.truetype(self.fonttype, self.fontsize)
self.font = ImageFont.truetype(FONT_PATH, self.fontsize)
def createPoints(self, draw):
"""
usage:
para: draw
return: None
for:
todo:
"""
for x in range(self.size[0]):
for y in range(self.size[1]):
flag = random.randint(0, self.pointBorder[0])
if flag > self.pointBorder[1]:
draw.point((x, y), fill = (0, 0, 0))
del flag
def createJam(self, draw):
"""
usage:
para: draw
return: None
for:
todo:
"""
lineNum = random.randint(self.jamNum[0], self.jamNum[1])
for i in range(lineNum):
begin = (random.randint(0, self.size[0]),
random.randint(0, self.size[1])
)
end = (random.randint(0, self.size[0]),
random.randint(0, self.size[1])
)
draw.line([begin, end], fill = (0, 0, 0))
def getPicString(self):
"""
usage: getPicString()
return: string
for :
todo: Nothing
"""
length = self.length
chars = self.chars
selectedChars = random.sample(chars, length)
charsToStr = string.join(selectedChars, '')
return charsToStr
def createChecker(self):
"""
usage: createChecker()
return: [str,pic]
str:
pic:
for:
todo:
"""
randStr = self.getPicString()
randStr1 = string.join([i + " " for i in randStr], '')
im = Image.new(self.mode, self.size, self.backgroundColor)
draw = ImageDraw.Draw(im)
draw.text(self.begin, randStr1, font = self.font,
fill = self.foregroundColor )
self.createJam(draw)
self.createPoints(draw)
para = [1 - float(random.randint(1, 2))/100,
0,
0,
0,
1 - float(random.randint(1, 10))/100,
float(random.randint(1, 2))/500,
0.001,
float(random.randint(1, 2))/500
]
im = im.transform(im.size, Image.PERSPECTIVE, para)
im = im.filter(ImageFilter.EDGE_ENHANCE_MORE)
im.save("checker.jpg", self.outputType)
return ([randStr, im])
if __name__ == "__main__":
c = picChecker()
t = c.createChecker()
print(t)
自分のプログラムの中でログインして認証コードを持ってログインページに現れます
@route('getRandomCode', name='')
class GetRandomCodeHandler(BaseHandler):
def get(self):
c = picChecker()
t = c.createChecker()
sio=StringIO.StringIO()
#wsServer.col(0).width = 7000
_id = self.get_secure_cookie("session_id")
if not _id:
_id = session_id()
self.set_secure_cookie("session_id", _id)
sessionForRandomCodeOld = self.db.query(SessionForRandomCode).filter_by(session_id=_id).first()
if not sessionForRandomCodeOld:
localTime = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
sessionForRandomCode = SessionForRandomCode(random_code=t[0],start_date=localTime,session_id=_id)
self.db.add(sessionForRandomCode)
self.db.commit()
else:
sessionForRandomCodeOld.random_code=t[0]
self.db.commit()
else:
sessionForRandomCodeOld = self.db.query(SessionForRandomCode).filter_by(session_id=_id).first()
if not sessionForRandomCodeOld:
localTime = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
sessionForRandomCode = SessionForRandomCode(random_code=t[0],start_date=localTime,session_id=_id)
self.db.add(sessionForRandomCode)
self.db.commit()
else:
sessionForRandomCodeOld.random_code=t[0]
self.db.commit()
t[1].save(sio,'jpeg')
self.write(sio.getvalue())