如何使用 pipenv 检查已安装的软件包是否匹配 Pipfile.lock?
How can I check that the installed packages match Pipfile.lock using pipenv?
在我的测试中,我想 运行 一个命令来确保我的虚拟环境中安装的包与 Pipfile.lock
中找到的包相匹配。
有这样的命令吗?
pipenv checkifinstalled || exit 1
这个问题可以简化为以下两个步骤:
将Pipfile.lock
转换为requirements.txt
文件(采用pip freeze
生成的格式)。
- 运行
pipenv requirements
(或pipenv requirements --dev
)很容易做到这一点。 (注意pipenv >= 2022.4.8支持此命令)
检查安装的包是否与生成的 requirements.txt
文件匹配。
- 在这个问题下找到了解决方案:Check if my Python has all required packages
实施:
以下是我在测试中将所有内容放在一起的方法:
import pkg_resources
import subprocess
import unittest
class DependencyChecks(unittest.TestCase):
def test_requirements_installed(self):
requirements_lines = subprocess.check_output(["pipenv", "requirements", "--dev"], text=True).splitlines()
req_lines = [line for line in requirements_lines if not line.startswith("-i ")]
requirements = pkg_resources.parse_requirements(req_lines)
for requirement in requirements:
req = str(requirement)
with self.subTest(requirement=req):
pkg_resources.require(req)
在我的测试中,我想 运行 一个命令来确保我的虚拟环境中安装的包与 Pipfile.lock
中找到的包相匹配。
有这样的命令吗?
pipenv checkifinstalled || exit 1
这个问题可以简化为以下两个步骤:
将
Pipfile.lock
转换为requirements.txt
文件(采用pip freeze
生成的格式)。- 运行
pipenv requirements
(或pipenv requirements --dev
)很容易做到这一点。 (注意pipenv >= 2022.4.8支持此命令)
- 运行
检查安装的包是否与生成的
requirements.txt
文件匹配。- 在这个问题下找到了解决方案:Check if my Python has all required packages
实施:
以下是我在测试中将所有内容放在一起的方法:
import pkg_resources
import subprocess
import unittest
class DependencyChecks(unittest.TestCase):
def test_requirements_installed(self):
requirements_lines = subprocess.check_output(["pipenv", "requirements", "--dev"], text=True).splitlines()
req_lines = [line for line in requirements_lines if not line.startswith("-i ")]
requirements = pkg_resources.parse_requirements(req_lines)
for requirement in requirements:
req = str(requirement)
with self.subTest(requirement=req):
pkg_resources.require(req)