为什么要在 Python 的虚拟环境中创建 requirements.txt 文件?
Why would you create a requirements.txt file in a virtual environment in Python?
我下载了一个 Python 项目,它包含一个虚拟环境和一个 requirements.txt 文件。为什么你需要两者?据我所知,虚拟环境已经包含了所需的模块。知道这种组合何时以及为何有用吗?
您不能将 virtualenv 目录与您的项目一起分发,因为内容可能因目标操作系统和操作系统版本而异。具体来说,包含安装在 Ubuntu 14.04 上的已编译组件的库的 virtualenv 将不同于安装在 Ubuntu 16.04.
上的等效 virtualenv
相反,你应该分发你的 requirements.txt
文件(只是一个约定,你可以使用任何你想要的文件名)这样最终用户就可以在他的机器上重新创建一个 virtualenv。
虽然从技术上讲它是 possible,但我找不到任何好的理由。两者都具有混淆,因为不清楚哪个是 "master"。而且您必须(或不?)担心已安装的软件包和 requirements.txt 文件之间的一致性。
另外venv和安装包在很多情况下依赖于底层OS,它们有二进制文件,不同的布局等。一般建议编写os-独立代码。
总而言之,我会坚持使用 requirements.txt 文件并从项目的存储库中删除任何 venv 文件夹。
我下载了一个 Python 项目,它包含一个虚拟环境和一个 requirements.txt 文件。为什么你需要两者?据我所知,虚拟环境已经包含了所需的模块。知道这种组合何时以及为何有用吗?
您不能将 virtualenv 目录与您的项目一起分发,因为内容可能因目标操作系统和操作系统版本而异。具体来说,包含安装在 Ubuntu 14.04 上的已编译组件的库的 virtualenv 将不同于安装在 Ubuntu 16.04.
上的等效 virtualenv相反,你应该分发你的 requirements.txt
文件(只是一个约定,你可以使用任何你想要的文件名)这样最终用户就可以在他的机器上重新创建一个 virtualenv。
虽然从技术上讲它是 possible,但我找不到任何好的理由。两者都具有混淆,因为不清楚哪个是 "master"。而且您必须(或不?)担心已安装的软件包和 requirements.txt 文件之间的一致性。
另外venv和安装包在很多情况下依赖于底层OS,它们有二进制文件,不同的布局等。一般建议编写os-独立代码。
总而言之,我会坚持使用 requirements.txt 文件并从项目的存储库中删除任何 venv 文件夹。