要点:
- virtualenv的概念
- virtualenv的安装
- virtualenv的创建
- 虚拟环境的激活
- 操作虚拟环境
- 冻结项目需求文本
- pip freeze > requirements.txt
- 根据需求文本,安装项目依赖库
- pip install -r requirements.txt
- virtualenv环境下安装django2.1和mysqlclient
1 .virtualenv概念
virtualenv 是一个创建隔绝的Python环境的工具。
virtualenv创建一个包含所有必要的可执行文件的文件夹,用来使用Python工程所需的包。
2. 安装 virtualenv
如果在virtualenv环境下安装django2.0,最好先升级python到3.5再做下面的操作
先安装pythonPython包管理工具pip,在利用这个pip安装virtualenv
# apt install -y python-pip
# pip install virtualenv
3. 创建一个虚拟环境:
# virtualenv VENV
虚拟环境文件包括:Python解析器,包管理工具(setuptools, pip, wheel),三方包等
指定 Python 版本创建虚拟环境
可选参数:-p
指定 Python2.x 版本创建虚拟环境
# virtualenv -p /usr/local/bin/python2.7 VENV
指定 Python3.5 版本创建虚拟环境
# virtualenv -p /usr/local/bin/python3.5 VENV3
4 .激活虚拟环境
# cd 到虚拟环境文件夹目录
# source bin/activate
5 验证当前确实在已激活的虚拟环境中,执行命令 pip --version 和 pip list
# pip --version
# pip list
python2.7环境下的虚拟环境
root@VM-0-3-ubuntu:/lwg# cd VENV
root@VM-0-3-ubuntu:/lwg/VENV# source bin/activate
(VENV) root@VM-0-3-ubuntu:/lwg/VENV# pip -V
pip 19.3.1 from /lwg/VENV/local/lib/python2.7/site-packages/pip (python 2.7)
(VENV) root@VM-0-3-ubuntu:/lwg/VENV# pip list
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future
version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-
process/#python-2-support
Package Version
----------- -------
Django 1.11.26
mysqlclient 1.4.6
pip 19.3.1
pytz 2019.3
setuptools 42.0.1
wheel 0.33.6
(VENV) root@VM-0-3-ubuntu:/lwg/VENV# deactivate
python3.5环境下的虚拟环境
root@VM-0-3-ubuntu:/lwg# source VENV3/bin/activate
(VENV3) root@VM-0-3-ubuntu:/lwg# pip -V
pip 19.3.1 from /lwg/VENV3/lib/python3.5/site-packages/pip (python 3.5)
(VENV3) root@VM-0-3-ubuntu:/lwg# pip list
Package Version
----------- -------
Django 2.1
mysqlclient 1.4.6
pip 19.3.1
pytz 2019.3
setuptools 42.0.2
wheel 0.33.6
6 退出虚拟环境,在激活的虚拟环境中,执行命令 deactivate
# deactivate
附录 默认方式安装:选默认的python
root@VM-0-3-ubuntu:/lwg# python -V
Python 3.5.2
root@VM-0-3-ubuntu:/lwg# virtualenv VENV
Using base prefix '/usr/local'
New python executable in /lwg/VENV/bin/python
Please make sure you remove any previous custom paths from your /root/.pydistutils.cfg file.
Installing setuptools, pip, wheel...
done.
root@VM-0-3-ubuntu:/lwg# source VENV/bin/activate
(VENV) root@VM-0-3-ubuntu:/lwg# pip -V
pip 19.3.1 from /lwg/VENV/lib/python3.5/site-packages/pip (python 3.5)
(VENV) root@VM-0-3-ubuntu:/lwg# pip list
Package Version
---------- -------
pip 19.3.1
setuptools 42.0.2
wheel 0.33.6
(VENV) root@VM-0-3-ubuntu:/lwg#
也可以指定 Python 版本创建虚拟环境
可选参数:-p
指定 Python2.x 版本创建虚拟环境
# virtualenv -p /usr/local/bin/python2.7 VENV
指定 Python3.5 版本创建虚拟环境
# virtualenv -p /usr/local/bin/python3.5 VENV3
7 .在virtualenv虚拟环境下安装django
# source VENV/bin/activate
(VENV) root@VM-0-3-ubuntu:/lwg# pip install django
ERROR: Package 'Django' requires a different Python: 3.5.2 not in '>=3.6'
解决办法: 指定版本django2.1
(VENV) root@VM-0-3-ubuntu:/lwg# pip install django==2.1
附录
Python环境与Django版本对应表:
Django-version Python versions
---------------------------------
1.11 2.7, 3.4, 3.5, 3.6
2.0 3.4, 3.5, 3.6
2.1 3.5, 3.6, 3.7
-----------------------------
8 .在virtualenv虚拟环境下安装mysql-client
(VENV) root@VM-0-3-ubuntu:/lwg#pip install mysqlclient
Installing collected packages: mysqlclient
Successfully installed mysqlclient-1.4.6
(VENV) root@VM-0-3-ubuntu:/lwg# pip list ----检查
Package Version
----------- -------
Django 2.1
mysqlclient 1.4.6
pip 19.3.1
pytz 2019.3
setuptools 42.0.2
wheel 0.33.6