Python虚拟环境

虚拟环境

虚拟环境是系统的一个位置,可以在其中安装包,并将其与其他Python包隔离。这样能够针对不同项目创建一个独立的环境,便于后期的移植。

虚拟环境管理工具

主要有三种:

  • virtualenv(历史更悠久);
  • pipenv(功能更强大);
  • venv(Python3.3以上原生支持);

使用 virtualenv 创建虚拟环境

1、安装virtualenv

$ pip install virtualenv

2、查看安装版本

$ python3 -m virtualenv --version

4、创建虚拟环境

$ python3 -m virtualenv dev_env

这时终端显示:

peng@localhost myblog % python3 -m virtualenv dev_env
created virtual environment CPython3.6.5.final.0-64 in 568ms
  creator CPython3Posix(dest=/Users/peng/python_work/myblog/dev_env, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/Users/peng/Library/Application Support/virtualenv)
    added seed packages: pip==21.0.1, setuptools==52.0.0, wheel==0.36.2
  activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
peng@localhost myblog % ls
dev_env

5、激活虚拟环境

$ source dev_env/bin/activate

6、安装flask

$ pip install flask

创建app.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

运行 flask run

(dev_env) peng@localhost myblog % flask run
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

7、生成requirement.txt

每次开发完都要手动执行下面命令,把最新的环境写入到requirement文件中,以便项目移植。

$ pip freeze > requirement.txt

查看requirement.txt

(dev_env) peng@localhost myblog % cat requirement.txt
click==7.1.2
Flask==1.1.2
itsdangerous==1.1.0
Jinja2==2.11.3
MarkupSafe==1.1.1
Werkzeug==1.0.1

8、安装依赖

$ pip install -r requirement.txt

9、brew 安装 pipenv

$ brew install pipenv

使用 pipenv 创建虚拟环境

1、安装pipenv

$ pip install pipenv

2、查看安装版本

$ python3 -m pipenv --version

3、创建虚拟环境

$ python3 -m pipenv check

这时终端显示

peng@localhost myadmin % python3 -m pipenv check
Warning: the environment variable LANG is not set!
We recommend setting this in ~/.profile (or equivalent) for proper expected behavior.
Creating a virtualenv for this project...
Pipfile: /Users/peng/python_work/myadmin/Pipfile
Using /usr/bin/python3 (3.8.2) to create virtualenv...
⠇ Creating virtual environment...created virtual environment CPython3.8.2.final.0-64 in 1317ms
  creator CPython3macOsFramework(dest=/Users/peng/.local/share/virtualenvs/myadmin-5lUWQo7w, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/Users/peng/Library/Application Support/virtualenv)
    added seed packages: pip==21.0.1, setuptools==52.0.0, wheel==0.36.2
  activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator

✔ Successfully created virtual environment!
Virtualenv location: /Users/peng/.local/share/virtualenvs/myadmin-5lUWQo7w
Creating a Pipfile for this project...
Checking PEP 508 requirements...
Passed!
Checking installed package safety...
All good!

4、启动虚拟环境

$ python3 -m pipenv shell

终端显示:

peng@localhost myadmin % python3 -m pipenv shell
Launching subshell in virtual environment...
 . /Users/peng/.local/share/virtualenvs/myadmin-5lUWQo7w/bin/activate
peng@localhost myadmin %  . /Users/peng/.local/share/virtualenvs/myadmin-5lUWQo7w/bin/activate
(myadmin) peng@localhost myadmin %

5、退出虚拟环境

$ exit

6、安装flask

$ pipenv install flask

7、查看包依赖关系

$ pipenv graph

终端显示:

(myadmin) peng@localhost myadmin % pipenv graph
Flask==1.1.2
  - click [required: >=5.1, installed: 7.1.2]
  - itsdangerous [required: >=0.24, installed: 1.1.0]
  - Jinja2 [required: >=2.10.1, installed: 2.11.3]
    - MarkupSafe [required: >=0.23, installed: 1.1.1]
  - Werkzeug [required: >=0.15, installed: 1.0.1]

8、查看虚拟环境路径

$ pipenv --venv

使用 venv 虚拟环境 (Python3)

Python3.3以上的版本通过venv模块原生支持虚拟环境。

1、创建项目目录

$ mkdir mysite && cd mysite 

2、创建名为dev_env的虚拟环境

$ python3 -m venv dev_env

执行ls,会发现项目目录下多了一个dev_env的文件夹。

3、激活虚拟环境

$ source dev_env/bin/activate

激活虚拟环境后,界面显示

peng@localhost mysite % source dev_env/bin/activate
(dev_env) peng@localhost mysite %

4、停止虚拟环境 deactivate

(dev_env) peng@localhost mysite % deactivate
peng@localhost mysite %

5、安装Django

$ pip3 install Django

6、创建项目

$ django-admin startproject mysite .

7、创建数据库

$ python3 manage.py migrate

8、启动项目

$ python3 manage.py runserver

这时会看到项目已启动:

(dev_env) peng@localhost mysite % python3 manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
February 25, 2021 - 01:43:19
Django version 3.1.7, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.