在Python封装的上下文中,似乎Pipfile/Pipfile.lock旨在替代Requirements.txt。但是,关于它们如何实际工作的文献很少。我在Python网站here的PyPi部分上找到了对pipfile的不断发展的描述,但这很困惑,并且没有解释文件不同部分的语义。

关于如何理解这些文件的任何指示?

最佳答案

如果您对Ruby的Bundler或Node的Npm有所了解,这些文件的概念很简单,并且与其他现有工具类似。 Pipenv既是程序包又是虚拟环境管理工具,它使用Pipfile和Pipfile.lock文件来实现这些目标。
Pipenv以一种默认的标准方式为您处理虚拟环境(不再需要激活和停用)。下面是一些入门的基础知识,请参见pipenv website
入门
在您的项目文件夹类型中,开始使用pipenv很容易。

$ pipenv install
...,如果它已经有一个requirements.txt文件,它将生成一个带有需求的Pipfile文件和一个虚拟环境文件夹,否则,它将生成一个空的Pipfile文件。如果您不喜欢或改变主意,请输入...
$ pipenv uninstall <package>
...而且您很高兴。要激活pipenv已经生成的虚拟环境,请继续...
$ pipenv shell
...,您的虚拟环境将被激活。离开环境...
$ exit
...,您将回到原来的终端 session 。
点文件
Pipfile文件旨在为开发和执行指定Python应用程序或库的软件包要求。您只需使用...即可安装软件包。
$ pipenv install flask
...并将其添加为部署和执行的依赖项或使用...
$ pipenv install --dev pytest
...,它将用作开发时间的依赖项。在这两种情况下,如果您需要更详细地了解软件包版本,则documentation pipenv中所述,它使用了pip使用的相同version specifiers。文件语法非常简单,如下所示。
[[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那样明显,因此为简洁起见,此处不会显示。

08-20 02:41