【问题标题】:Programmatically generate requirements.txt file以编程方式生成 requirements.txt 文件
【发布时间】:2014-08-10 21:31:06
【问题描述】:

我正在尝试以编程方式生成 requirements.txt 文件。这样我可以将它与第二个 .txt 文件进行比较。到目前为止,我已经尝试了以下方法,但它们只将要求输出到控制台(没有生成 .txt 文件)。

到目前为止我已经尝试过

    import pip

    pip.main(["freeze",">","requirements.txt"])

    from subprocess import call

    call(["pip","freeze", ">","requirements.txt"])

如果我尝试在终端中手动运行相同的命令,则文件会毫无问题地生成。有什么建议吗?

【问题讨论】:

    标签: python subprocess pip requirements.txt


    【解决方案1】:

    让pip直接提供分布列表

    脚本myfreeze.py

    import pip
    with open("requirements.txt", "w") as f:
        for dist in pip.get_installed_distributions():
            req = dist.as_requirement()
            f.write(str(req) + "\n")
    

    然后您会在 requirements.txt 文件中获得预期的内容。

    【讨论】:

      【解决方案2】:
      subprocess.Popen(['pip', 'freeze'], stdout=open('/tmp/pip.log', 'w'))
      

      【讨论】:

        【解决方案3】:

        为此使用 pip 是 pip 开发人员的strongly discouraged。它在更新的 pip 版本中也被破坏了。以下是在链接的 Github 问题上建议的方法的摘要。与接受的答案非常相似,但改用 pkg_resources 模块。

        import pkg_resources
        
        
        def generate_pip_freeze() -> str:
            requirements = ""
            for dist in pkg_resources.working_set:
                req = dist.as_requirement()
                requirements += f"{req}\n"
            return requirements
        

        【讨论】:

          猜你喜欢
          • 2018-01-29
          • 1970-01-01
          • 1970-01-01
          • 2011-05-20
          • 1970-01-01
          • 2022-12-13
          • 2017-04-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多