http 80 https 443 ssh 22 远程访问 ftp 21 文件传输mysql 3306 redis 6379 smtp 25 邮件发送服务 pop3 110 邮件接收服务
pip是python的包管理工具,下面的操作是软件以后从豆瓣下载 速度快
win永久安装pip的源
首先在window的文件夹窗口输入 :%APPDATA%
然后在底下新建pip文件夹,然后到pip文件夹里面去新建个pip.ini,然后再里面输入内容:
[global]
timeout = 6000
index-url = http://pypi.douban.com/simple
trusted-host = pypi.douban.com
截图:
京东 python2 flask1.0 淘宝 python3 flask1.0
到目前位置,我们所有的第三方包安装都是直接通过pip install xx
的方式进行安装的,这样安装会将那个包安装到你的系统级的Python
环境中。但是这样有一个问题,就是如果你现在用Django 1.10.x
写了个网站,然后你的领导跟你说,之前有一个旧项目是用Django 0.9
开发的,让你来维护,但是Django 1.10
不再兼容Django 0.9
的一些语法了。这时候就会碰到一个问题,我如何在我的电脑中同时拥有Django 1.10
和Django 0.9
两套环境呢?这时候我们就可以通过虚拟环境来解决这个问题。
虚拟环境相当于一个抽屉,在这个抽屉中安装的任何软件包都不会影响到其他抽屉。并且在项目中,我可以指定这个项目的虚拟环境来配合我的项目。比如我们现在有一个项目是基于Django 1.10.x
版本,又有一个项目是基于Django 0.9.x
的版本,那么这时候就可以创建两个虚拟环境,在这两个虚拟环境中分别安装Django 1.10.x
和Django 0.9.x
来适配我们的项目。
virtualenv
:virtualenv
是用来创建虚拟环境的软件工具,我们可以通过pip
或者pip3
来安装:
pip install virtualenv
pip3 install virtualenv
创建虚拟环境非常简单,通过以下命令就可以创建了:
virtualenv [虚拟环境的名字]
如果你当前的Python3/Scripts
的查找路径在Python2/Scripts
的前面,那么将会使用python3
作为这个虚拟环境的解释器。如果python2/Scripts
在python3/Scripts
前面,那么将会使用Python2
来作为这个虚拟环境的解释器。
虚拟环境创建好了以后,那么可以进入到这个虚拟环境中,然后安装一些第三方包,进入虚拟环境在不同的操作系统中有不同的方式,一般分为两种,第一种是Windows
,第二种是*nix
:
windows
进入虚拟环境:进入到虚拟环境的Scripts
文件夹中,然后执行activate
。*nix
进入虚拟环境:source /path/to/virtualenv/bin/activate
退出虚拟环境很简单,通过一个命令就可以完成:deactivate
。
Python
解释器:在电脑的环境变量中,一般是不会去更改一些环境变量的顺序的。也就是说比如你的Python2/Scripts
在Python3/Scripts
的前面,那么你不会经常去更改他们的位置。但是这时候我确实是想在创建虚拟环境的时候用Python3
这个版本,这时候可以通过-p
参数来指定具体的Python
解释器:
virtualenv -p C:\Python36\python.exe [virutalenv name]
virtualenv 需要进入目录 激活或者退出 这样很麻烦
virtualenvwrapper
这个软件包可以让我们管理虚拟环境变得更加简单。不用再跑到某个目录下通过virtualenv
来创建虚拟环境,并且激活的时候也要跑到具体的目录下去激活。
sudo apt-get install gcc make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget libc6-dev llvm #安装依赖包
https://github.com/pyenv/pyenv-installer
virtualenvwrapper
:pip install virtualenvwrapper
。pip install virtualenvwrapper-win
。sudo vim ~/.bashrc
export WORKON_HOME=$HOME/.virtualenvs #让所有的虚拟环境 存放到指定的目录下
source /usr/local/bin/virtualenvwrapper.sh #方便找到我们的环境
source ~/.bashrc 让配置文件立即生效
virtualenvwrapper
基本使用:创建虚拟环境:
mkvirtualenv my_env
那么会在你当前用户下创建一个Env
的文件夹,然后将这个虚拟环境安装到这个目录下。
如果你电脑中安装了python2
和python3
,并且两个版本中都安装了virtualenvwrapper
,那么将会使用环境变量中第一个出现的Python
版本来作为这个虚拟环境的Python
解释器。
切换到某个虚拟环境:
workon my_env
退出当前虚拟环境:
deactivate
删除某个虚拟环境:
rmvirtualenv my_env
列出所有虚拟环境:
lsvirtualenv
进入到虚拟环境所在的目录:
首先切换到该虚拟环境
cdvirtualenv
mkvirtualenv
的默认路径:在我的电脑->右键->属性->高级系统设置->环境变量->系统变量
中添加一个参数WORKON_HOME
,将这个参数的值设置为你需要的路径。
Python
版本:在使用mkvirtualenv
的时候,可以指定--python
的参数来指定具体的python
路径:
mkvirtualenv --python==C:\Python27\python.exe qf_env #创建python2版本的虚拟环境
find / -name python3 #假如python3 位于 /usr/local/python3
mkvirtualenv --python=/usr/local/python3 虚拟环境名字
如果有报错安装 sudo apt-get install python3-distutils 再执行上面的步骤
如果 python 显示 3.6. 说明 python3的环境创建成功
pip install flask
c/s client server 客户端服务器模式 腾讯QQ
b/s browser server 浏览器服务器模式 taobao.com
https://www.baidu.com/s?wd=%E8%8B%8D%E8%80%81%E5%B8%88
scheme://host:port/path/?username=123&password=123&query_string=xxx#anchor
web服务器
: 负责处理http请求 、响应静态文件 常见的有nginx apache IIS(微软) lighthttpd
应用服务器
: 如果处理动态请求 那么 nginx没法实现 需要交给python php等 nginx 不能直接指挥python 那就需要通过 应用服务器 常见的有 uwsgi、tomcat
web框架
: 封装了常用功能 好比是一个毛坯房 我们只需要在此基础上 装修就好了 没必要重复造车
常见的 有 flask django tornado spring3 等
Content-type :既可以指定传输的数据类型 又可以指定数据的编码类型
content-type: text/html;charset=utf-8;
Mime-type:不能指定数据的编码类型
mime-type:text/html
from flask import Flask #导入类库
#创建一个实例
kangbazi = Flask(__name__)
@kangbazi.route('/') #将控制器 或者 试图函数 暴漏出去 方便访问
def index():
return 'hello world
'
@kangbazi.route('/admin/')
def admin():
return '欢迎来到管理后台
'
#启动实例
if __name__ == "__main__":
kangbazi.run()
pip install flask-script
app.py
#导入类库
from flask import Flask
from flask_script import Manager #导入扩展
#创建一个应用实例 类似于创建一个对象
app = Flask(__name__)
manager = Manager(app) #创建一个实例 将app作为参数传递过来 表示 通过manager来管理
#路由地址
@app.route('/')
#视图函数
def hello_world():
return 'Hello World!99999'
#启动
if __name__ == '__main__':
# app.run()
manager.run()
用法: 命令行 进入虚拟环境 并进入项目所在的根目录
python app.py runserver -d -r -p 5005 -h 0.0.0.0 --threaded
-d 开启debug 模式 能够打印错误
-r reload 自动加载
-p 指定端口号
-h 指定允许访问的ip 0.0.0.0 表示允许所有的ip来访问
--threaded 表示多线程访问
所谓的路由就是之 将 视图函数 暴露出去
@app.route('/admin/')
def administer():
return '江西理工后台管理系统'
@app.route('/welcome//' ) #http://172.16.42.165:5005/welcome/zhangsan/
def welcome(name):
return 'hello %s'% name #hello zhangsan
@app.route('/article//' ) #http://172.16.42.165:5005/article/10/
def article(num):
return '您现在看的是第%s页' % num #您现在看的是第10页
@app.route('/path/' ) # http://172.16.42.165:5005/path/a///
def paths(p):
return p # a/// /不再作为分割符来使用了
string: 默认的数据类型 接受没有任何/的字符串
int:整型
float:浮点型
uuid: 只能是uuid类型 import uuid print(uuid.uuid4()) #c32c6284-2d27-485f-85c1-170977672b1a
path:和string相似 但是可以传/
不能将所有的url全部放到 一个文件里边 应该是模块单独来放
比如豆瓣 豆瓣都 电影 图书 音乐 可以分三个文件 保存路由地址
book.py
from flask import Blueprint
book = Blueprint('book',__name__)
@book.route('/')
def index():
return '图书首页'
@book.route('/list//' )
def list(num):
return '图书列表 您当前正在看第%s本书' % num
app.py实例文件
from book import book
app.register_blueprint(book,url_prefix='/book') #前缀 url_prefix
#http://172.16.42.165:5005/book/
#http://172.16.42.165:5005/book/list/9/
from flask import request
@book.route('/req//' )
def req(num):
# return request.url #包含前端所有的请求
# return request.base_url
# return request.host_url
# return request.method #获取请求的方式 GET POST
#return request.args['username'] #获取get请求url的参数
#http://172.16.42.165:5005/book/req/6/?username=jxlg666
#打印 jxlg666
# return request.remote_addr #客户端的ip地址
return request.headers['User-Agent']
2 成功 301 永久重定向 302 临时重定向 4 客户端的问题 5 服务器的问题
from flask import make_response
@book.route('/make_response/')
def res():
# return '请求姿势不对',404
res = make_response('这是来自构造函数的响应',500)
return res
@book.route('/')
def index():
if not request.args.get('username'):
# return redirect('/login/')
return redirect(url_for('login')) #这个login是方法的名称 而不是路由的名称
else:
return '图书首页'