virtualenv 和 pipenv 都是管理 python 项目和依赖的工具,二者的目的都是为不同的 python 项目创建独立的虚拟开发运行环境,使得在同一台计算机上,这些不同的项目可以使用不同的 Python 版本以及不同的 package 版本,项目之间互不冲突,彼此独立。
virtualenv 是以前的标准。pipenv 由于更简单好用一些,已经取代 virtualenv 成了目前管理 python 项目与依赖的新标准。
PC 上只装了一版 Python:3.10.5
1 virtualenv 用法
1.1 安装 virtualenv:
pip install virtualenv
1.2 为项目创建虚拟环境
进入项目文件夹,运行如下命令:
virtualenv venv
D:\milestone4-scraping-books>virtualenv venv
created virtual environment CPython3.10.5.final.0-64 in 566ms
creator CPython3Windows(dest=D:\milestone4-scraping-books\venv, 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\yanchun\AppData\Local\pypa\virtualenv)
added seed packages: pip==22.1.2, setuptools==62.6.0, wheel==0.37.1
activators BashActivator,BatchActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator
这里 venv 是虚拟环境的名称,此命令将在当前路径生成一个文件夹 venv
1.3 启用虚拟环境
运行文件 venv\Scripts\activate.bat ,将启用虚拟环境。
D:\milestone4-scraping-books>.\venv\Scripts\activate.bat
(venv) D:\milestone4-scraping-books>
左边出现的 (venv) 说明已进入虚拟环境,当前正在使用此虚拟环境。
1.4 在虚拟环境中安装若干必要依赖项
例如,运行命令:
pip install packages
pip install beautifulsoup4
1.5 导出依赖项版本
使用以下命令:
pip freeze
查看已经安装的所有 package 及其版本:
(venv) D:\milestone4-scraping-books>pip freeze
certifi==2022.6.15
charset-normalizer==2.1.0
idna==3.3
requests==2.28.1
urllib3==1.26.9
将 pip freeze 的结果写到一个名称为 requirements.txt 的文件中是通用做法,方便开发人员查看版本信息:
pip freeze > requirements.txt
1.6 使用 requirements.txt 复制虚拟环境
只要有 requirements.txt 文件,就可以为项目复制相同的开发运行环境。 项目使用者可以使用以下命令安装全部需要的安装包:
pip install -r requirements.txt
1.7 停用虚拟环境
运行文件 venv\Scripts\deactivate.bat ,将停用虚拟环境。
2 pipenv 用法
要使用 pipenv ,要删除工程中的 venv 文件夹,并退出虚拟环境,然后安装此 tool。
2.1 安装 pipenv
pip install pipenv
2.2 安装 package
进入工程目录,安装项目必要的 package, 例如:
pipenv install requests
首次运行命令 pipenv install some_package_name 将自动创建一个虚拟环境,所在路径由 pipenv 指定,不在项目文件夹中,由命令输出可以看出在什么路径。 同时项目文件夹中将生成两个文件: Pipfile 和 Pipfile.lock , 这两个文件类似于 package.json 和 package-lock.json
如果工程文件夹中已经存在 requirements.txt ,可以直接运行命令:
pipenv install
但这种方法,测试多次,生成 Pipfile.lock 一直失败,原因未知。
2.3 在虚拟环境中运行 app:
安装所需的第三方库后可以在虚拟环境中运行 app:
pipenv run python my-python-app.py
不同于 virtualenv 工具, 不再需要运行 active.bat 以及 deactive.bat 。
2.4 pipenv: 如果改变了项目所在路径,必须重新创建虚拟环境
|