簡體   English   中英

如何使用 pipenv 檢查已安裝的軟件包是否與 Pipfile.lock 匹配?

[英]How can I check that the installed packages match Pipfile.lock using pipenv?

在我的測試中,我想運行一個命令來確保我的虛擬環境中安裝的包與Pipfile.lock中找到的包相匹配。

有這樣的命令嗎?

pipenv checkifinstalled || exit 1

這個問題可以簡化為以下兩個步驟:

  1. Pipfile.lock轉換為requirements.txt文件(采用pip freeze生成的格式)。

    • 這可以通過運行pipenv requirements (或pipenv requirements --dev )輕松完成。 (請注意,此命令在 pipenv >= 2022.4.8 中受支持)
  2. 檢查安裝的包是否與生成的requirements.txt文件匹配。

執行:

以下是我如何將它們放在一起進行測試:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM