PyCharm没有导出正确的requirements.txt

时间:2017-08-03 05:27:41

标签: python python-3.x pip pycharm

我在PyCharm中创建了一个项目,该项目使用安装在PyCharm创建的Python 3.6.1虚拟环境中的flask(在其他一些模块中),并且应用程序本身在PyCharm中运行良好。但是,当我为其他虚拟需求设置requirements.txt文件时,我注意到输出文件中只列出了virtualenv。 (为了创建文件,我去了“console”并执行了“pip freeze> requirements.txt”。)

在测试了一些东西之后,我注意到pip list只给了我三个模块开始安装。我知道这不是真的,因为当我进入我的解释器设置时,PyCharm说安装了很多其他模块,但它们似乎并没有实际安装

如何有效地在PyCharm中创建需求文件?我是否只需要列出我在自述文件中安装的所有模块,并让我的用户了解如何自行安装它们?

屏幕截图如下:

项目设置对话框 Project Settings

点子列表输出 pip list

2 个答案:

答案 0 :(得分:2)

使用pipreqs

$ pip install pipreqs
$ pipreqs /home/project/location
Successfully saved requirements file in /home/project/location/requirements.txt

这会将当前项目目录中使用的包导出到requirements.txt

请参阅pipreqs

为什么不冻结?

  • pip freeze仅保存使用pip安装的软件包 安装在您的环境中。
  • pip freeze保存了所有包 环境,包括那些你当前没有使用过的环境 项目。 (如果你没有virtualenv)
  • 有时你只需要 在没有安装的情况下为新项目创建requirements.txt 模块。

答案 1 :(得分:0)

这当然很奇怪,我唯一能想到的是它在Windows上virtualenv出现了问题。

无论如何,从requirements.txt创建pip freeze不是最佳做法,因为您安装的软件包数量超过项目所需的软件包

E.g。假设你的项目只需要Flask:

$ pip install Flask
$ pip freeze
click==6.7
Flask==0.12.2
itsdangerous==0.24
Jinja2==2.9.6
MarkupSafe==1.0
Werkzeug==0.12.2

正如您通过安装Flask所看到的那样,安装了更多的软件包,但您不必在requirements.txt中列出这些软件包,因为它们不是您的项目要求,而是Flask的要求。

因此,您应手动构建requirements.txt。我通常做的是pip install Flask; pip freeze |grep Flask并将行Flask==0.12.2复制到我的requirements.txt,每次我使用pip安装时都这样做。