pipenv 是 Python 项目的依赖管理器,与 Node.js 的 npm、Ruby 的 bundler 类似,在协作项目中优势明显,能简化依赖管理。
pipenv是Kenneth Reitz在2017年1月发布的Python依赖管理工具,现在由PyPA维护。你可以把它看做是pip和virtualenv的组合体,而它基于的Pipfile则用来替代旧的依赖记录方式(requirements.txt),pipenv 在易用性上要简单很多,同时增加了 lock 文件,能更好的锁定版本。如果没有特殊要求可以 pipenv 直接使用 lock 的版本,开发又可以小步迭代,实现依赖的稳步升级。
Pipfile
,和依赖锁定Pipfile.lock
。pipenv install
的包会强制使用Pipfile中的源。pipenv graph
命令可以看到依赖树。pip install pipenv
输入命令pipenv --version
来查看是否安装成功,如果安装成功则会显示当前模块的版本编号
但是默认情况下Pipenv会统一管理所有的虚拟环境,默认路径如下
C:\Users\Administrator.virtualenvs\
~/.local/share/virtualenvs/
设置方式如下:
WORKON_HOME
环境变量,其值设置为存放的具体路径且路径必须已经创建好,如其值为D:\virtualenvs\
,保存成功后新创建虚拟环境即可,即后续所有创建的虚拟环境都存在此路径下面。PIPENV_VENV_IN_PROJECT
环境变量,将其值设置为1
,则项目的虚拟环境,会在项目的根目录自动生成.venv
存放。pipenv shell
:进入虚拟环境(检测当前项目对应的虚拟环境是否存在,不存在则自动创建项目所需要的环境)pipenv install
:虚拟环境中安装包(检测当前项目对应的虚拟环境是否存在,不存在则自动创建项目所需要的环境)pipenv install 包名
:安装虚拟环境包到默认环境pipenv install 包名 --dev
:安装虚拟环境包到开发环境pipenv uninstall 包名
:卸载虚拟环境包,会将该包与依赖包全部卸载pipenv --where
:列出本地工程的路径pipenv --venv
:列出虚拟环境路径pipenv --py
:列出虚拟环境的python可执行文件pipenv lock
:生成 Pipfile.lock 文件exit
:退出虚拟环境pipenv --rm
:删除虚拟环境[[source]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
verify_ssl = true
name = "pypi"
[packages]
requests = "*"
pyyaml = "*"
Django = "*"
[dev-packages]
pytest = "*"
[requires]
python_version = "3.7"
[scripts]
django = "python manage.py runserver 0.0.0.0:8080"
source
:用来设置仓库地址,即指定镜像源下载虚拟环境所需要的包packages
:用来指定项目依赖的包,可以用于生产环境和生成requirements文件dev-packages
:用来指定开发环境需要的包,这类包只用于开发过程,不用与生产环境。requires
:指定目标Python版本scripts
:添加自定义的脚本命令,并通过 pipenv run + 名称
的方式在虚拟环境中执行对应的命令 。
pipenv run django
:相当于 执行命令 pipenv run python manage.py runserver 0.0.0.0:8080
Pipfile
文件可以复制到其他项目内,通过执行pipenv install
命令, 根据这个 Pipfile
文件生成虚拟环境和依赖包的安装。
通过hash算法将包的名称和版本,及依赖关系生成哈希值,保证包的完整性,除修改镜像源,非必要情况不对该文件进行修改。