有啥方法可以自动输出 requirements.txt 吗?
Posted
技术标签:
【中文标题】有啥方法可以自动输出 requirements.txt 吗?【英文标题】:Is there any way to output requirements.txt automatically?有什么方法可以自动输出 requirements.txt 吗? 【发布时间】:2015-06-25 06:02:58 【问题描述】:我想在 PyCharm 中为我的 Python 3 项目输出 requirements.txt
。有什么想法吗?
【问题讨论】:
pip freeze > requirements.txt
?
@jonrsharpe 如果他使用的是虚拟环境。
@khajvah PyCharm 让您在创建新项目时设置和使用新的 virtualenv 变得非常容易,所以我不明白为什么不这样做。
pip freeze > requirements.txt
将输出所有已安装的包,但我只想要与项目相关的。
@ChenZhongPu 那么你应该设置一个特定于项目的virtualenv
并只安装该项目需要的东西。见jetbrains.com/pycharm/help/creating-virtual-environment.html。 pip freeze
在那个环境中然后会创建你想要的列表。
【参考方案1】:
试试下面的命令:
pip freeze > requirements.txt
【讨论】:
这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。 对不起 - 这确实提供了问题的答案。当然,它可以扩展 - 正如在 cmets 中所见,它不是所需的解决方案。但是在提示中输入的这一行将按照要求“自动输出 requirements.txt”。 我认为作者要求在 PyCharm 中实现它。这个命令可以工作,但除非它可以在 PyCharm 上下文中使用,否则我认为它不能回答问题 为什么这个答案甚至被赞成?pip freeze
只是列出 所有 已安装的包,与项目的要求无关。为什么到处都是这个答案?
在给定环境中安装的包是你的项目应该需要的。如果您在大型甚至中型项目中工作,并且没有将其隔离在 virtualenv 中,那么您做错了。当然,您必须手动分离“开发”需求和运行需求。【参考方案2】:
你可以在 Pycharm 中通过设置和项目解释器来完成。选择所有包及其版本和最新版本。然后将所有这些数据复制到 MS Word 文档中。 MS word 会将其视为表格。删除该表的中间列。现在将所有这些数据复制到记事本++中。搜索双空格“”或制表符并将其替换为“==”。将此文件另存为requirements.txt
。它会工作
【讨论】:
尝试其他解决方案pip freeze > requirements.txt
创建一个包含每个(包括默认)包的 BIG requirements.txt 文件。我只想获得稍后在我的 vertenv 中安装的自定义包。所以这个 HACK 对我有用。【参考方案3】:
Pigar 效果很好,我刚刚测试过
https://github.com/damnever/pigar
上面pip freeze
的答案只有在你开始用pip安装东西之前设置了一个virtualenv才能正常工作。否则,您最终会得到“超出要求”的要求。似乎 pigar 会查看您的所有导入语句并查找当前正在使用的版本。无论如何,如果你在开始之前设置了 virtualenv,它会更干净,否则 pigar 可以救你。它也在子目录中查找。
【讨论】:
最佳答案。对于任何需要它的人:“pip install pigar”,然后是“pigar”(在项目根目录中) 它甚至可以通过 conda 安装!【参考方案4】:在 Pycharm 中打开终端并输入以下命令:
pip freeze > requirements.txt
并会自动创建 requirements.txt
【讨论】:
这应该是获得更多选票的唯一答案。它完全按照它的工作原理。【参考方案5】:当然这篇文章有点老了,但我用我学到的东西贡献了同样的东西,据我所知,我们可以通过三种方式来生成 requirements.txt:
-
使用FREEZE
pip freeze > requirements.txt
在运行命令之前,请确保已激活虚拟环境,因为 该命令将在与项目相同的文件夹中执行。将在与执行相同的文件夹中生成具有 Python 依赖项的文件 requirements.txt。 如果您使用此命令将从虚拟环境中收集所有要求。如果您需要获取仅在当前项目范围内使用的需求,那么您需要检查下一个选项。
-
使用DEEPHELL
pip install --user dephell
-
使用PIPREQS
点安装 pipreqs
pipreqs /path/to/project
注意
为什么要使用 pipreqs?因为 pip freeze 将从环境中收集所有依赖项。而 pipreqs 将收集仅在当前项目中使用的需求!
加上freeze只保存用pip install安装的包,保存环境中的所有包。
如果您想在不安装模块的情况下生成 requirements.txt,请使用 pipreqs
如果有其他方法可以继续学习,总是很感激:)
【讨论】:
以上是关于有啥方法可以自动输出 requirements.txt 吗?的主要内容,如果未能解决你的问题,请参考以下文章