看来Pipfile / Pipfile。在Python打包的上下文中,require . lock是用来替换requirements.txt的。然而,并没有太多关于这些如何实际工作的文档。我在Python网站的PyPi部分找到了一个关于pipfile的描述,但它非常混乱,并且没有解释文件不同部分的语义。
关于如何理解这些文件,有什么建议吗?
看来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那样明显,因此为了简洁起见,这里将不显示它。