在 CentOS 上使用 Python 虚拟环境
一、概念澄清
二、准备与安装 Python 3
sudo yum -y install epel-release gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite-devel openssl-devel libffi-develwget https://www.python.org/ftp/python/3.8.9/Python-3.8.9.tgz && tar -zxvf Python-3.8.9.tgz && cd Python-3.8.9sudo ./configure --enable-optimizations --with-ssl --prefix=/usr/local/python3 && sudo make && sudo make altinstallmake altinstall 可避免替换系统自带的 python2,便于共存。/usr/local/python3/bin/python3.8 -V 应显示 Python 3.8.9。三、创建与管理 Python 虚拟环境
/usr/local/python3/bin/python3.8 -m venv ~/venvs/myprojsource ~/venvs/myproj/bin/activatedeactivatepip3 install -U virtualenv virtualenvwrapper~/.bashrc):
export WORKON_HOME=$HOME/.virtualenvsexport VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3source /usr/local/python3/bin/virtualenvwrapper.shsource ~/.bashrcmkvirtualenv -p python3 myprojlsvirtualenv -bworkon myprojdeactivatermvirtualenv myproj四、将项目做成服务并开机自启
~/start.sh(示例使用 Gunicorn 托管 Flask/Django):
#!/usr/bin/env bashsource ~/venvs/myproj/bin/activatecd /opt/myapp && exec gunicorn -b 0.0.0.0:8000 app:appchmod +x ~/start.sh/etc/systemd/system/myapp.service:
[Unit]Description=My Python AppAfter=network.target[Service]Type=simpleUser=centosWorkingDirectory=/opt/myappExecStart=/bin/bash /home/centos/start.shRestart=always[Install]WantedBy=multi-user.targetsudo systemctl daemon-reloadsudo systemctl enable --now myapp.servicejournalctl -u myapp.service -fsudo firewall-cmd --permanent --add-port=8000/tcp && sudo firewall-cmd --reload