1.sys.exit() os._exit() exit() quit()
(1)sys.exit()
执行该语句会直接退出程序,这也是经常使用的方法,也不需要考虑平台等因素的影响,一般是退出Python程序的首选方法。
退出程序引发SystemExit异常,(这是唯一一个不会被认为是错误的异常),如果没有捕获这个异常将会直接退出程序执行,当然也可以捕获这个异常进行一些其他操作(比如清理工作)。
sys.exit()函数是通过抛出异常的方式来终止进程的,也就是说如果它抛出来的异常被捕捉到了的话程序就不会退出了,而是去进行一些清理工作。
SystemExit并不派生自Exception,所以用Exception捕捉不到该SystemEixt异常,应该使用SystemExit来捕捉。
该方法中包含一个参数status,默认为0,表示正常退出,其他都是异常退出。
还可以这样使用:sys.exit("Goodbye!"); 一般主程序中使用此退出。
捕获到SystemExit异常,程序没有直接退出:
song@ubuntu:~$ vi systemExit.py
song@ubuntu:~$ more systemExit.py
#!/usr/bin/python
#!coding:utf-8
import sys
if __name__=='__main__':
try:
sys.exit(825)
except SystemExit,error:
print 'the information of SystemExit:'.format(error)
print "the program doesn't exit!"
print 'Now,the game is over!'
song@ubuntu:~$ python systemExit.py
the information of SystemExit:825
the program doesn't exit!
Now,the game is over!
没有捕获到SystemExit异常,程序直接退出,后边的代码不执行:
song@ubuntu:~$ vi systemExit.py
song@ubuntu:~$ more systemExit.py
#!/usr/bin/python
#!coding:utf-8
import sys
if __name__=='__main__':
try:
sys.exit(825)
except Exception,error:
print 'the information of SystemExit:'.format(error)
print "the program doesn't exit!"
print 'Now,the game is over!'
song@ubuntu:~$ python systemExit.py
没有捕获到SystemExit异常,输出'Goodbye!'后,程序直接退出,后边的代码不执行:
song@ubuntu:~$ vi systemExit.py
song@ubuntu:~$ more systemExit.py
#!/usr/bin/python
#!coding:utf-8
import sys
if __name__=='__main__':
try:
sys.exit('Goodbye!')
except Exception,error:
print 'the information of SystemExit:'.format(error)
print "the program doesn't exit!"
print 'Now,the game is over!'
song@ubuntu:~$ python systemExit.py
Goodbye!
(2)os._exit()
直接退出Python解释器, 不抛异常, 不执行相关清理工作,其后的代码都不执行,其使用会受到平台的限制,但我们常用的Win32平台和基于UNIX的平台不会有所影响,常用在子进程的退出.一般来说os._exit()用于在线程中退出,sys.exit()用于在主线程中退出。
(3)exit()/quit()
抛出SystemExit异常. 一般在交互式shell中退出时使用.
2.virtualenv虚拟化模块
virtualenv 这个工具的问世,极大的避免了我们在开发过程中可能遇到的环境冲突。
假设当你的系统中有多个Python版本:比如:有一个2.7.5、一个2.7.12、以及一个3.2,这个时候如果是在系统内,那么,只能选择其中一个使用,而且还会有冲突的可能。
那么这个时候Virtualenv这个神器的作用来了,它可以在系统中,创建多个“独立”的Python运行环境,这个时候我们只需要给每个APP选择我们需要的Python环境就OK了。
virtualenv是如何创建“独立”的Python运行环境的呢?原理很简单,就是把系统Python复制一份到virtualenv的环境,用命令source venv/bin/activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令python和pip均指向当前的virtualenv环境。
下面简单介绍安装方式:
(1).如果你已经安装了PIP工具可以直接执行以下命令:
pip install virtualenv
(2).未安装PIP工具,老老实实的执行3个基础安装步骤:
进入python官网下载virtualenv最新源码包或者使用wget 命令:
解压并进入解压目录:
tar -xzvf virtualenv15.0.3.tar.gz
cd virtualenv15.0.3
运行安装命令
python setup.py install
创建一个独立的Python运行环境,命名为venv:
创建一个test_env分区运行下面命令:
virtualenv --no-site-packages test_env
命令virtualenv就可以创建一个独立的Python运行环境,我们还加上了参数--no-site-packages,这样,已经安装到系统Python环境中的所有第三方包都不会复制过来,这样,我们就得到了一个不带任何第三方包的“干净”的Python运行环境。
进入并运行分区:
cd test_env
source ./bin/activate
当创建分区时默认安装setuptools和pip包,版本根据你系统时使用的python版本而定
现在你可以在你的test_env这个独立环境下为所欲为了,当然例如 gcc 这些编译环境还是依赖系统环境,需要预先安装
退出分区:
deactivate
补充:
python3.3以后自带venv模块支持轻量级虚拟环境,virtualenv模块仍然支持,可安装。
virtualenv --no-site-packages myvenv
等价于
virtualenv myvenv (目前新版默认不使用系统环境包)
python -m venv myvenv
也是默认全新干净的环境,相反可选的参数
python -m venv --system-site-packages myvenv
使虚拟环境指向系统环境包目录(非复制),在系统环境pip新安装包,在虚拟环境就可以使用。
领取专属 10元无门槛券
私享最新 技术干货