一、安装python
1. 直接官网下载(目前,安装的是3.4版本,32位),注意该Python版本和操作系统32版本要和后面的插件一致。
2. Python version 3.4 required, which was not found in the registry.错误解决办法
(1)将LOCAL_MACHINE\software\python\PyhtonCore\3.4导出,不妨设为3_4.reg,
(2)编辑3_4.reg,将LOCAL_MACHINE全部替换为CURRENT_USER,点击保存,
(3)双击运行3_4.reg文件,现在CURRENT_USER\software\python\PyhtonCore应该存在了3.4目录了,
(4)运行相关包的安装程序,成功完成。
二、Python开发工具安装
(一)采用eclipse+Pydev插件的方式
1.在eclipse官网下载一个基本版本的eclipse
2.在Pydev官网下载(也可直接在sourceforge上下载离线安装包,是ZIP包,解压后有两个文件夹features和plugins,将其复制到eclipse的目录下。
3.点击eclipse的Window下的preferences,在弹出窗口里选择pydev->interpreters->python interpreter,在右边点击New,输入interpreter name和interpreter executable。name输入Python,executable选择Python.exe目录,点击OK即可。
4.点击File-》New-》PyDev Project。选择Python版本,下面选择“Create ‘src’ folder and add it to the PYTHONPATH”,这样就有src目录,也可后面新建Pydev Package。
(二)使用Pycharm
一般用Pycharm的社区版就可。
其实如果想简便,可以直接下安装anaconda,里面只带了很多常用的包,下面记录单独安装一些包的过程。
三、安装numpy插件
1首先安装numpy,目前在windows系统64位下只找到whl格式的,whl格式安装方法如下
在python安装目录(我的是C:\Program Files\Python)下的scripts下通过pip命令安装
pip install d:\ numpy-1.9.3+vanilla-cp34-none-win_amd64.whl
注意:
(1)whl文件的文件名不能修改,否则会报找不到文件
(2)也可以直接 pip install numpy,但我用时报错
(3)安装wheel时,命令:pip install wheel
(4)python的whl资源:http://www.lfd.uci.edu/~gohlke/pythonlibs/
四、安装matplotlib
matplotlib依赖dateutil、six、pyparsing包(已找到3个EXE安装包)
测试代码如下:
import numpy as np
import matplotlib.pyplot as plt
N = 5
menMeans = (20, 35, 30, 35, 27)
menStd = (2, 3, 4, 1, 2)
ind = np.arange(N) # the x locations for the groups
width = 0.35 # the width of the bars
fig, ax = plt.subplots()
rects1 = ax.bar(ind, menMeans, width, color='r', yerr=menStd)
womenMeans = (25, 32, 34, 20, 25)
womenStd = (3, 5, 2, 3, 3)
rects2 = ax.bar(ind+width, womenMeans, width, color='y', yerr=womenStd)
# add some
ax.set_ylabel('Scores')
ax.set_title('Scores by group and gender')
ax.set_xticks(ind+width)
ax.set_xticklabels( ('G1', 'G2', 'G3', 'G4', 'G5') )
ax.legend( (rects1[0], rects2[0]), ('Men', 'Women') )
def autolabel(rects):
# attach some text labels
for rect in rects:
height = rect.get_height()
ax.text(rect.get_x()+rect.get_width()/2., 1.05*height, '%d'%int(height),
ha='center', va='bottom')
autolabel(rects1)
autolabel(rects2)
plt.show()
五、安装scipy
安装时用的64位Python3.4版本,测试时一直提示“ImportError: DLL load failed: 找不到指定的模块。”,发现他找不到的模块都是pyd格式。(现已将python和插件全部换成32位Python3.4版本,测试通过)
scipy测试代码:
from scipy.optimize import fsolve
from math import sin,cos
def f(x):
x0 = float(x[0])
x1 = float(x[1])
x2 = float(x[2])
return [
5*x1+3,
4*x0*x0 - 2*sin(x1*x2),
x1*x2 - 1.5
]
result = fsolve(f, [1,1,1])
print(result)
print(f(result))
六、GUI开发
1.测试代码:(使用tkinter,python自带tkinter)
import tkinter
top = tkinter.Tk()
# Code to add widgets will go here...
top.mainloop()
但界面比较丑陋,还不如用pyqt
七、数据库编程(Mysql)
由于原来python2.7的mysqldb不支持python3.*,故使用pymysql。
1.安装pymysql
(1)pip install pymysql
(2)下载包
2.测试代码(增删改)
import pymysql
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='92216891', db='test')
cur = conn.cursor()
'''
insert
'''
sta = cur.execute("insert into ky_user (name) values ('test')");
conn.commit()
'''
update
'''
sta = cur.execute("update ky_user set name='spirit2' where name='spirit'");
conn.commit()
'''
delete
'''
sta = cur.execute("delete from ky_user where name='test'");
conn.commit()
'''
query
'''
cur.execute("select * from ky_user")
for r in cur:
print(r)
cur.close()
conn.close()
八、网络编程
1.简单TCP程序
(1)服务器端代码:
import socket,traceback
host=''
port=12345
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
s.bind((host,port))
s.listen(1)
while 1:
try:
clientsock,clientaddr=s.accept()
except KeyboardInterrupt:
raise
except:
traceback.print_exc()
continue
try:
print("connect from:"+clientsock.getpeername()[0]+"["+clientsock.getpeername()[0]+"]")
while 1:
data=clientsock.recv(4096)
if not len(data):
break
print(clientsock.getpeername()[0]+':'+str(data))
t=input('Me:')
clientsock.sendall(t.encode())
except (KeyboardInterrupt,SystemExit):
raise
except:
traceback.print_exc()
try:
clientsock.close()
except KeyboardInterrupt:
raise
except:
traceback.print_exc()
(2)客户端代码:
import socket,sys
port=12345
host='127.0.0.1'
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
try:
s.connect((host,port))
except:
print('连接错误!')
while 1:
data=input('Me:')
s.send(data.encode())
buf=s.recv(4096).decode()
if not len(buf):
break
print("Server:"+buf)
2.简单UDP程序
(1)服务器端
from socket import *
from time import ctime
HOST = '127.0.0.1'
PORT = 21567
BUFSIZE = 1024
ADDR = (HOST,PORT)
udpSerSock = socket(AF_INET, SOCK_DGRAM)
udpSerSock.bind(ADDR)
while True:
print('wating for message...')
data, addr = udpSerSock.recvfrom(BUFSIZE)
print("cli:"+data.decode())
str = input("Me:")
udpSerSock.sendto(str.encode(),addr)
udpSerSock.close()
(2)客户端
from socket import *
HOST = 'localhost'
PORT = 21567
BUFSIZE = 1024
ADDR = (HOST, PORT)
udpCliSock = socket(AF_INET, SOCK_DGRAM)
while True:
data = input('>')
if not data:
break
udpCliSock.sendto(data.encode(),ADDR)
data,ADDR = udpCliSock.recvfrom(BUFSIZE)
if not data:
break
print(data)
udpCliSock.close()