python开发web服务器《一》
来源:互联网 发布:代理服务器搭建 ubuntu 编辑:程序博客网 时间:2024/06/06 06:59
准备:
环境搭建:
1 virtualenv介绍
问题需求:
在python开发中,经常涉及不同项目,依赖不同的python版本(2.7或者3.4),又或者依赖不同的第三方包.甚至可能涉及多个版本.
项目开发中,开发环境,测试环境,线上部署环境.可能依赖不同的配置.很多时候,开发机可能安装了很多包,而线上部署,可能只需要很小的子集.
解决方案: virtualenv
virtualenv 为每个不同项目提供一份 Python 安装.它并没有真正安装多个 Python 副本,但是它确实提供了一种巧妙的方式来让各项目环境保持独立.
virtualenv,类似”python”中的虚拟机.
可以对单一项目,在项目中,创建一个虚拟python开发环境.
将该项目依赖的包,单独安装在该”虚拟环境”中,实现和其他项目隔离.
该项目中,安装的python版本,不会和OS系统冲突.
每次使用,都需要在项目中,激活该”虚拟环境”.
使用完,退出”虚拟环境”.
2 安装virtualenv
2.1 使用pip安装
确认已经安装pip 包管理工具.
执行如下命令安装.
sudo pip install virtualenv
如果pip不能用,可以用python执行脚本进行安装或升级。
2.2使用系统包管理工具安装(Mac/Ubuntu)
brew install pyenv-virtualenv # Mac下,采用homebrew方式安装
sudo apt-get install python-virtualenv # ubuntu下,采用apt-get方式安装
3 使用方法
3.1 创建虚拟环境
创建虚拟环境.有两种方式.
cd my_project_folder # 切换至项目目录
方式1: 使用 主机默认python版本,创建
virtualenv venv # 创建虚拟环境安装目录"venv".
方式2: 指定python版本(路径),创建
virtualenv -p /usr/bin/python2.7 venv # 指定使用python2.7创建一个 项目虚拟环境.
方式3: 不依赖系统环境中已有的site package(即系统已安装的python包)
virtualenv --no-site-packages venv # 加上参数 --no-site-packages.
执行上述命令,项目中,多出一个名为”venv”的文件夹.
该文件夹,会从”宿主主机”,根据创建方式,拷贝一份”python环境”.
该虚拟环境中,默认已安装pip.
3.2 项目中使用虚拟环境
source venv/bin/activate # 激活项目中的虚拟环境, venv为 创建虚拟环境时,给定名称
3.3 执行操作
3.3.1 安装开发包
sudo pip install flask # 安装flask包
3.3.2运行项目
python xxx.py
3.4 结束虚拟环境
项目运行结束,执行如下命令:
deactivate # 退出项目的 virtualenv 虚拟环境.
3.5 生成可打包环境
某些特殊需求下,可能没有网络, 我们期望直接打包一个ENV, 可以解压后直接使用, 这时候可以使用virtualenv -relocatable指令将ENV修改为可更改位置的ENV
3.6 查看帮助
4 使用技巧
经常有这样一种需求:就是把项目发布,需要知道项目依赖哪些包.
4.1 pip的常用操作.
导出:
pip freeze > requirements.txt # 导出项目依赖的包到requirements.txt文件
批量安装:
pip install -r requirements.txt # 从依赖文件,批量安装包.
4.2 配合virtualenv使用.
这里为何一定要用virtualenv呢?因为如果没有使用virtualenv,上述pip freeze操作,会将主机安装过的所有python包,都导出.这显然不是我们需要的.
对单一的项目,如果没有virtualenv,将导出一堆用不到的包.
有了virtualenv,就可以先激活项目中的virtualenv,再执行pip freeze操作.这样就可以保证获取到的都是项目依赖(无冗余).
5 pip常用操作
sudo pip install flask # 单一安装flask包
pip install -r requirements.txt # 批量安装python包
pip list # 查看环境中,已安装的所有python包
pip freeze > requirements.txt # 导出环境中,已安装所有包至配置文件
http://www.selfrebuild.net/2015/07/02/Python%E5%B8%B8%E7%94%A8%E5%8C%85%20-%20virtualenv%E4%BD%BF%E7%94%A8/
0 0
- python开发web服务器《一》
- Python服务器开发一:python基础
- python(一)简单WEB服务器
- Python开发web服务器——留言板
- Java Web服务器开发概述 一
- 自己动手开发一个 Web 服务器(一)
- 自己动手开发一个 Web 服务器(一)
- 自己动手开发一个 Web 服务器(一)
- Java Web服务器开发概述 一
- 【Python web 开发】 bottle 简单教程 (一)
- python Flask Web开发入门(一)
- PYTHON学习之路一:WEB开发
- 《Python Web开发实战》读书笔记一
- Go Web服务开发入门(一) -- 搭建简单web服务器
- Flask Web开发(一)基于python的Web表单
- 一句Python命令启动一个Web服务器
- 一句Python命令启动一个Web服务器
- Python服务器框架学习——web.py(一)
- 那些年踩过的坑---Socket源地址为0
- js json 增删改查
- js json 增删改查
- 模板分页封装
- 模板分页封装
- python开发web服务器《一》
- js创建对象的几种常用方式
- 图文解说:Nginx+tomcat配置集群负载均衡(转)
- JS中通过方法名字符串调用方法
- 前端框架Bootstrap的Modal使用Ajax数据源,如何避免数据被缓存
- js 分页 对象
- 说说高大上的职业规划 for “码农”
- PostgreSQL中如何关闭死锁的进程
- postgresql 死锁