python 虚拟环境配置

Python虚拟环境配置

virtualenv

什么是 virtualenv

为应用创建一套隔离的 python 运行环境,python2、python3 均支持。

安装 virtualenv

  • pip install virtualenv
  • pip install virtualenvwrapper-win
F:\PY_PROJECTS\virtualenv>pip list
Package                           Version
--------------------------------- -------
backports.entry-points-selectable 1.1.0
distlib                           0.3.3
filelock                          3.3.0
pip                               21.3
platformdirs                      2.4.0
setuptools                        56.0.0
six                               1.16.0
virtualenv                        20.8.1
virtualenvwrapper-win             1.2.6

新建虚拟环境目录

  • mkdir F:\PY_PROJECTS\virtualenv

配置环境变量

  • WORKON_HOME:F:\PY_PROJECTS\virtualenv

测试安装

  • cmd 执行 workon 命令,可以列出所有虚拟环境
  • workon [name] 可以进入指定的虚拟环境
  • deactivate 退出当前的虚拟环境
  • mkvirtualenv [name] 创建虚拟环境
  • rmvirtualenv [name] 删除虚拟环境

创建虚拟环境

  • mkvirtualenv dj_py3 -p python3
  • dj_py3(虚拟环境名称)
  • -p python3(指定python版本),不写则默认环境变量中配置的python版本

进入虚拟环境

  • F:\PY_PROJECTS\virtualenv>workon dj_py3
  • (dj_py3) F:\PY_PROJECTS\virtualenv>

venv

什么是 venv

python 3.3以上自带,无需额外安装。原名 pyvenv 在python3.6 名称被弃用。

pipenv

是什么

pipenv 集成了 pip,virtualenv 两者的功能,并完善了两者的缺陷

安装 pipenv

  • pip install pipenv

创建虚拟环境

  1. 创建文件夹:mkdir dj_py3
  2. 进入文件夹:cd dj_py3
  3. 初始化虚拟环境:pipenv install

创建好环境后,会生成,Pipfile 、Pipfile.lock 文件
提交项目时,可以提交这两个文件,其他开发克隆项目后,执行 pipenv install --dev 生成自己的虚拟环境。
Pipfile.lock 是通过 hash 算法将包的名称和版本以及依赖关系生成哈希值,保证包的完整性。

我本地初始化时,报错,AttributeError: 'NoneType' object has no attribute 'version_sort',是因为找不到 python 的版本,解决方法:1、复制 python3.exe 重命名为 python.exe;
2、在项目下新建 Pipfile,内容

[requires]
python_version=“3.9.5”

执行 pipenv install ,成功解决。

F:\PY_PROJECTS\Projects\test01>pipenv install
Creating a virtualenv for this project...
Pipfile: F:\PY_PROJECTS\Projects\test01\Pipfile
Using D:/Program Files/Python39/python.exe (3.9.5) to create virtualenv...
[==  ] Creating virtual environment...created virtual environment CPython3.9.5.final.0-64 in 5698ms
  creator CPython3Windows(dest=F:\PY_PROJECTS\virtualenv\test01-u_sI2Wph, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=C:\Users\x1c\AppData\Local\pypa\virtualenv)
    added seed packages: pip==21.2.4, setuptools==58.1.0, wheel==0.37.0
  activators BashActivator,BatchActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator

Successfully created virtual environment!
Virtualenv location: F:\PY_PROJECTS\virtualenv\test01-u_sI2Wph
Pipfile.lock not found, creating...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Updated Pipfile.lock (8c0763)!
Installing dependencies from Pipfile.lock (8c0763)...
  ================================ 0/0 - 00:00:00
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.

pipenv 管理模块和包

  • 查看安装包及依赖关系:pipenv graph
  • 初始化虚拟化环境:pipenv install
  • 安装虚拟环境的模块包:pipenv install 包名
  • 卸载虚拟环境的模块包:pipenv uninstall 包名
  • 生成 requirements.txt 文件:pipenv lock -r --dev > requirements.txt
  • 通过 requirements.txt 文件安装环境:pipenv install -r requirements.txt

Pipfile 文件

安装好虚拟环境后,会生成 Pipfile 文件,内容如下(如果手动建的 Pipfile 结构不会变,可以删掉重新执行 pipenv install):

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]

[dev-packages]

[requires]
python_version = "3.9"
  • 可以修改 url 为国内的源:https://pypi.tuna.tsinghua.edu.cn/simple