PyCharm未导出正确的需求.txt

Ben*_*abe 5 python pip pycharm python-3.x

我在PyCharm中创建了一个项目,该项目使用安装在PyCharm创建的Python 3.6.1虚拟环境中的烧瓶(以及其他一些模块),并且该应用程序本身在PyCharm中运行良好。但是,当我为其他虚拟需求设置requirements.txt文件时,我注意到virtualenv输出文件中仅列出了该文件。(要创建文件,我转到“控制台”并进行了“ pip Frozen> requirements.txt”。)

在测试了一些东西之后,我注意到这pip list仅给我安装了三个模块。我知道这是不对的,因为当我进入解释器的设置时,PyCharm说还安装了许多其他模块,但看起来好像并没有真正安装它们。

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

屏幕截图如下:

项目设置对话框: 项目设定

点列表输出: 点列表

Din*_*ran 7

使用 pipreq

$ pip install pipreqs
$ pipreqs /home/project/location
Successfully saved requirements file in /home/project/location/requirements.txt
Run Code Online (Sandbox Code Playgroud)

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

查看pipreq

为什么不冻结点子?

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


Pac*_* H. 0

这确实很奇怪,我唯一能想到的是这是virtualenvWindows 上的问题。

requirements.txt无论如何,创建from并不是最佳实践,因为您安装的软件包比项目所需pip freeze的软件包多。

例如,假设您的项目只需要 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
Run Code Online (Sandbox Code Playgroud)

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

因此你应该requirements.txt手动构建你的。我通常做的是pip install Flask; pip freeze |grep Flask将行复制Flask==0.12.2到我的requirements.txt,每次我安装一些东西时都会这样做pip