python虚拟环境
虚拟环境的作用
一台服务器可同时运行多个项目,各项目对python解释器的要求各不相同从而对python库的版本要求也不相同,例如用于爬取网页的urllib库在python3中直接导入而python2需要再导入一个urllib2。虚拟环境此时的作用就是新增不同版本的python解释器(可指定为python2.7、3.6、3.9),每一个解释器和默认python一样在系统中都有一个文件路径。
虚拟环境工具
目前市场上流行的虚拟环境工具有:
Virtualenv
virtualenv是常用的较为轻量的虚拟环境工具。在界面版系统中,pycharm已经嵌入了多种环境工具以virtualenv为例,步骤如下图
首先新建项目
截图 2022-07-07 111147.jpg]]设置项目的保存路径同时设置虚拟环境python解释器的路径即可
在命令行版系统(Linux)中,使用pip3 install virtualenv
,是pip还是pip3是根据系统默认的是python2还是python3决定,总之virtualenv --version
是20.15.1最好,慎重使用apt get install virtualenv
大概率版本不对。然后pip3 install virtualenvwrapper
是virtualenv的插件,更简便地管理虚拟环境。然后sudo vi ~/.bashrc
修改环境变量,source .bashrc
更新。
export WORKON_HOME=$HOME/.virtualenvs #生成的虚拟环境以及python解释器都在这个目录下,注意这是一个隐藏目录。也可以自定义路径,在$HOME/后修改
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=~/.local/bin/virtualenv
source ~/.local/bin/virtualenvwrapper.sh
#注:ubuntu18及以上版本,virtualenv和virtualenvwrapper.sh被安装到了home目录下的.local/bin/中,非原来的/usr/local/bin/中
没有插件只能mkvirtualenv test
一个虚拟环境后每次cd XX/XX/test
然后激活进入环境source test/bin/activate
,安装插件后只需要进入workon test
退出deactivate
删除rmvirtualenv test
。
开机启动自运行python
有时我们需要服务器或者树莓派,上电后立即执行某几个python项目。那么多任务时我们就需要给每个项目找到对应的python解释器,可以用find / -name python3
找到所有包含’python3’名的文件路径也可以进入虚拟环境后python
然后cd /etc/rc.local
下用shell脚本添写开机执行命令
#!/bin/sh
#/etc/init.d/testboot
### BEGIN INIT INFO
# Provides:testboot
# Required-Start:$remote_fs $syslog
# Required-Stop:$remote_fs $syslog
# Default-Start:2 3 4 5
# Default-Stop:0 1 6
# Short-Description: testboot
# Description: This service is used to start my applaction
### END INIT INFO
case "$1" in
start)
echo "start your app here."
su pi -c "exec ~/testboot.sh"
;;
stop)
echo "stop your app here."
;;
*)
echo "Usage: service testboot start|stop"
exit 1
;;
esac
#写在exit 0前
/home/xzg/.virtualenvs/test/bin/python /home/xzg/main.py
exit 0
测试失败:whereis python3
该命令只有在进入虚拟环境下才能找到虚拟环境的python解释器与直接python
内执行查找相同,主要是因为whereis根据已有的环境路径查找,virtualenv在进退虚拟环境时python解释器的环境路径也在由默认的和虚拟的相应切换。