在服务器上运行python程序,可能会面领这个问题:多个python程序使用到了多个依赖包需要安装,而多个依赖包之间可能还存在着冲突的问题;如果后续不使用,已安装到系统的依赖包,可能就不需要了,卸载起来也比较麻烦。
如果使用了虚拟环境,以上问题就都解决了。不同的程序运行在不同的虚拟环境下,后续不使用,直接把不同虚拟环境的文件夹删除即可,非常方便。
安装准备虚拟环境
首先在linux系统下安装python3-pip,然后通过pip3安装virtualenv
#ubuntu下安装python3-pip apt install python3-pip #centos下安装python3-pip: yum install python3-pip #安装virtualenv pip3 install virtualenv pip3.8 install virtualenv
启用虚拟环境
假设python程序放在/opt/my-project下面
mkdir -p /opt/my-project cd /opt/my-project #生成虚拟环境 virtualenv venv #看到my-project 有venv目录了 #参数 –no-site-packages,已经安装到系统Python环境中的所有第三方包都不会复制过来,这样,我们就得到了一个不带任何第三方包的“干净”的Python运行环境 #参数 –system-site-packages,虚拟环境会继承/usr/lib/python2.7/site-packages下的所有库。如果想依赖系统包目录,则可以使用此功能。如果您想要与全局系统隔离,请不要使用此参数。 #也可以使用-p PYTHON_EXE选项在创建虚拟环境的时候指定python版本 #virtualenv -p /usr/bin/python2.7 venv
虚拟环境运行
#进入虚拟环境 source venv/bin/activate #如果要安装依赖,就用你之前的方法安装,例如 #pip install <some-package> #运行python程序,直接使用 python some.py #退出当前的venv环境,使用deactivate命令 deactivate
另外如果在不进入虚拟环境,想要直接/opt/my-project下的py程序(例如在crontab下执行,依赖包等环境还是希望使用venv下的),可以这样做:
#如果要直接运行(不进入activate的情况下)可以这样: /opt/my-project/venv/bin/python /opt/my-project/xxx.py >/dev/null
文章评论