看来Pipfile / Pipfile。在Python打包的上下文中,require . lock是用来替换requirements.txt的。然而,并没有太多关于这些如何实际工作的文档。我在Python网站的PyPi部分找到了一个关于pipfile的描述,但它非常混乱,并且没有解释文件不同部分的语义。

关于如何理解这些文件,有什么建议吗?


当前回答

这些文件背后的概念很简单,类似于其他已经存在的工具,如果你熟悉Ruby的Bundler或Node的Npm的话。Pipenv是一个包和虚拟环境管理工具,它使用Pipfile和Pipfile。锁定文件来实现这些目标。

Pipenv为您处理虚拟环境(不再需要激活和取消激活)。下面是一些入门的基础知识,更多信息请访问pipenv网站。

开始

开始使用pipenv很简单,在你的项目文件夹类型…

$ pipenv install

... 如果它已经有了requirements.txt文件,它将生成一个包含需求和虚拟环境文件夹的Pipfile文件,否则,它将生成一个空的Pipfile文件。如果你不喜欢或改变了你的想法,你已经安装,只需输入…

$ pipenv uninstall <package>

... 你可以开始了。要激活pipenv已经生成的虚拟环境,请使用…

$ pipenv shell

... 你的虚拟环境将被激活。离开环境…

$ exit

... 您将回到原来的终端会话。

Pipfile

Pipfile文件旨在为您的Python应用程序或库指定开发和执行的包需求。您可以通过简单地使用…

$ pipenv install flask

... 它将作为部署和执行的依赖项添加,或者使用…

$ pipenv install --dev pytest

... 它将在开发时用作依赖项。在这两种情况下,如果您需要更详细地说明包的版本,如文档中所述,pipenv使用与pip相同的版本说明符。该文件的语法非常简单,如下所示。

[[source]] # Here goes your package sources (where you are downloading your packages from).
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[packages] # Here goes your package requirements for running the application and its versions (which packages you will use when running the application).
requests = "*"
flask = "*"
pandas = "*"

[dev-packages] # Here goes your package requirements for developing the application and its versions (which packages you will use when developing the application)
pylint = "*"
wheel = "*"

[requires] # Here goes your required Python version.
python_version = "3.6"

Pipfile.lock

Pipfile。lock的目的是根据Pipfile中提供的包来指定应该使用这些包的哪个特定版本,从而避免自动升级相互依赖的包并破坏项目依赖树的风险。

您可以锁定您当前安装的包使用…

$ pipenv lock

... 该工具将查找您的虚拟环境文件夹,根据当前安装的版本自动生成锁文件。文件语法不像Pipfile那样明显,因此为了简洁起见,这里将不显示它。

其他回答

值得注意的是,截至目前(2022年),pipfile和pipfile。锁只被pipenv使用,这是一个由同一作者编写的工具。目前没有标准(即PEP)提到这些文件。

关于pipenv,还有其他流行的工具(如poetry)试图在不使用pipfiles的情况下解决类似的用例。

与此相关的还有pyproject的曙光。toml由各种pep支持,如660和621,它正在慢慢获得setuptools, flit, hatch的支持。

更新:从2022年夏天开始,python打包教程完全用pyproject.toml取代了setup.py和setup.cfg的教程。

正如上面@Charles Duffy所解释的,它是Gemfile和Gemfile的直接模拟。Ruby世界的锁。有关详细信息,请参阅下面的参考资料。

参考:https://medium.com/never——跳- - - bandwagon/gemfile和gemfile -锁在ruby - 65 adc918b856

这些文件背后的概念很简单,类似于其他已经存在的工具,如果你熟悉Ruby的Bundler或Node的Npm的话。Pipenv是一个包和虚拟环境管理工具,它使用Pipfile和Pipfile。锁定文件来实现这些目标。

Pipenv为您处理虚拟环境(不再需要激活和取消激活)。下面是一些入门的基础知识,更多信息请访问pipenv网站。

开始

开始使用pipenv很简单,在你的项目文件夹类型…

$ pipenv install

... 如果它已经有了requirements.txt文件,它将生成一个包含需求和虚拟环境文件夹的Pipfile文件,否则,它将生成一个空的Pipfile文件。如果你不喜欢或改变了你的想法,你已经安装,只需输入…

$ pipenv uninstall <package>

... 你可以开始了。要激活pipenv已经生成的虚拟环境,请使用…

$ pipenv shell

... 你的虚拟环境将被激活。离开环境…

$ exit

... 您将回到原来的终端会话。

Pipfile

Pipfile文件旨在为您的Python应用程序或库指定开发和执行的包需求。您可以通过简单地使用…

$ pipenv install flask

... 它将作为部署和执行的依赖项添加,或者使用…

$ pipenv install --dev pytest

... 它将在开发时用作依赖项。在这两种情况下,如果您需要更详细地说明包的版本,如文档中所述,pipenv使用与pip相同的版本说明符。该文件的语法非常简单,如下所示。

[[source]] # Here goes your package sources (where you are downloading your packages from).
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[packages] # Here goes your package requirements for running the application and its versions (which packages you will use when running the application).
requests = "*"
flask = "*"
pandas = "*"

[dev-packages] # Here goes your package requirements for developing the application and its versions (which packages you will use when developing the application)
pylint = "*"
wheel = "*"

[requires] # Here goes your required Python version.
python_version = "3.6"

Pipfile.lock

Pipfile。lock的目的是根据Pipfile中提供的包来指定应该使用这些包的哪个特定版本,从而避免自动升级相互依赖的包并破坏项目依赖树的风险。

您可以锁定您当前安装的包使用…

$ pipenv lock

... 该工具将查找您的虚拟环境文件夹,根据当前安装的版本自动生成锁文件。文件语法不像Pipfile那样明显,因此为了简洁起见,这里将不显示它。