python pipenv
Python的软件包生态系统使您可以通过简单的pip install
命令利用数百万其他开发人员的工作。 借助Python的虚拟环境,您可以将项目及其包彼此隔离。
但是,将环境和程序包分开处理可能很麻烦。 如果您的项目有特定的程序包要求,并且您想专注于开发而不是维护,那么这是令人怀疑的。 我们需要的是一种将环境和程序包一起管理的方法。
Pipenv将Python虚拟环境和Python软件包的管理整合到一个工具中。 Pipenv确保每个项目使用所需的每个程序包的正确版本,并且每个程序包也具有正确的依赖性。
此外,Pipenv会生成项目随行的依赖项列表,从而允许其他用户或开发人员以相同的方式设置相同的项目。 其他用户也需要安装Pipenv才能正确设置由Pipenv管理的项目,但是幸运的是,安装和使用Pipenv轻而易举。
Pipenv如何运作
通常,当您创建一个Python项目并将虚拟环境用于其程序包时,您需要自己创建虚拟环境(使用py -m venv
命令),将依赖项安装到其中,并手动跟踪依赖项。
Pipenv提供了一种半自动完成所有这些操作的方法。 通过Pipenv的命令行界面安装软件包时,将为您创建和管理项目的虚拟环境。 跟踪和锁定了相关性,您可以分别管理开发和运行时相关性。 您还可以从现有的老式学校requirements.txt
文件进行迁移,因此无需拆开项目并从头开始就可以很好地使用Pipenv。
请注意,与其他Python项目管理工具( 例如Poetry )不同,Pipenv不会管理项目的“脚手架”。 也就是说,Pipenv不会使用模拟测试,文档存根等来创建项目目录的内部结构,而是主要关注软件包和环境管理。 如果您只想让工具专注于虚拟环境和软件包,而不是一站式解决方案,那么Pipenv就是一个不错的选择。
![胡椒](https://images.idgesg.net/images/article/2020/06/pipenv_lg-100848760-large.jpg)
使用Pipenv将软件包安装到新创建的项目目录中。 Pipenv创建一个虚拟环境来存储该软件包(如果尚不存在)。
开始使用Pipenv
Pipenv的安装方式与大多数其他Python软件包相同: pip install --user pipenv
。 建议使用--user
选项,以防止Pipenv与其他系统范围的软件包冲突。 您还应该将用户基本二进制目录的路径添加到系统路径 ,以使Pipenv命令被路由到正确的位置。
如果您计划使Pipenv成为工作流程的一致部分,那么也建议尽量减少底层Python安装。 该建议适用于大多数使用虚拟环境的Python安装。
用Pipenv建立一个新项目
要使用Pipenv开始一个全新的项目,只需创建一个目录,然后使用通常为该项目创建的文件填充该目录即可。 如果您倾向于随手搭建一个项目,则可以从一个空目录开始。
Pipenv的安装项目包与Pip的安装包没有明显的不同。 实际上,语法几乎相同。 在项目目录中打开一个控制台,然后键入pipenv install <package_name>
为该项目安装一个软件包。 要指定该软件包用于开发 ,请使用-d
标志。 您可以使用pip
语法来表示软件包的特定版本(例如, black==13.0b1
)。
使用Pipenv安装软件包时,会发生两件事。 首先,Pipenv将检查是否已经为此项目目录创建了虚拟环境。 如果是,Pipenv会将软件包安装到现有的虚拟环境中。 如果否,Pipenv将创建一个虚拟环境,该虚拟环境使用与运行Pipenv相同的Python版本。 请注意,虚拟环境不是在项目目录本身中创建的。 它是在用户配置文件中由Pipenv管理的目录中创建的。
其次,Pipenv将请求的软件包安装到虚拟环境。 安装完成后,Pipenv将报告所做的所有工作,包括必须创建虚拟环境的路径。
通常,您不需要知道Pipenv创建的虚拟环境的路径。 要激活环境,只需导航到您的项目目录并使用pipenv shell
启动新的shell会话,或使用pipenv run <command>
直接运行命令。 例如,使用pipenv run mypy
运行的命令行工具版本mypy
(假设mypy
被安装在虚拟环境中的工具),或pipenv run python -m <module>
运行在虚拟环境中可用的Python模块。
Pipenv和锁文件
使用Pipenv安装软件包后,请在目录中浏览,您将看到两个文件Pipfile
和Pipfile.lock
。 两者都是由Pipenv自动生成的,因此不应直接进行编辑,因为它们描述了项目中软件包的状态。
Pipfile
是两者中较简单的一个。 它仅列出了项目所需的软件包,从何处安装(默认是PyPI)以及运行所有程序所需的Python版本。 Pipfile.lock
更复杂。 它列出了每个软件包以及版本详细信息和从该软件包生成的SHA-256哈希。 散列用于确保已安装的软件包与指定的软件包完全匹配-不仅是版本号,还包括获得的内容。
在使用Pipenv进行程序包管理的项目上工作时,您需要将Pipfile
和Pipfile.lock
文件添加到该项目的版本控制存储库中。 对项目的软件包所做的任何更改都会更改这些文件,因此应跟踪和更改这些版本。
使用Pipenv项目
如果为使用Pipenv进行软件包管理的项目下载源存储库,则您要做的就是将存储库的内容解压缩到目录中并运行pipenv install
(不需要软件包名称)。 Pipenv将读取项目的Pipfile
和Pipfile.lock
文件,创建虚拟环境,并根据需要安装所有依赖项。
最后,如果您想使用Pipenv来管理当前使用requirements.txt
文件的项目,只需导航至该项目的目录并运行pipenv install
。 Pipenv将检测requirements.txt
(或者您可以使用-r
标志指向它)并将所有需求迁移到Pipfile
。
翻译自: https://www.infoworld.com/article/3561758/how-to-manage-python-projects-with-pipenv.html
python pipenv