跳转至

Python 生成 requirements 的方法

pip freeze

最简单的方法,会把当前环境里所有的包都列出来,需要配合 虚拟环境 使用。

pip freeze > requirements.txt

这个方法会把非直接依赖的包(二级依赖、三级依赖、...)也列出来。

pipreqs

通过检查代码中的 import 语句来生成 requirements.txt,只列出项目的直接依赖。即使没有真的安装依赖包,它也能列出来。

在生成完以后最好检查一下。 如果用 importlib 或者其他阴间方法导入包,它认不出来,就不会把包列进依赖里。

安装

pip install pipreqs

使用

Usage:
    pipreqs [options] [<path>]

Arguments:
    <path>                The path to the directory containing the application files for which a requirements file
                          should be generated (defaults to the current working directory)

Options:
    --use-local           Use ONLY local package info instead of querying PyPI
    --pypi-server <url>   Use custom PyPi server
    --proxy <url>         Use Proxy, parameter will be passed to requests library. You can also just set the
                          environments parameter in your terminal:
                          $ export HTTP_PROXY="http://10.10.1.10:3128"
                          $ export HTTPS_PROXY="https://10.10.1.10:1080"
    --debug               Print debug information
    --ignore <dirs>...    Ignore extra directories, each separated by a comma
    --no-follow-links     Do not follow symbolic links in the project
    --encoding <charset>  Use encoding parameter for file open
    --savepath <file>     Save the list of requirements in the given file
    --print               Output the list of requirements in the standard output
    --force               Overwrite existing requirements.txt
    --diff <file>         Compare modules in requirements.txt to project imports
    --clean <file>        Clean up requirements.txt by removing modules that are not imported in project
    --mode <scheme>       Enables dynamic versioning with <compat>, <gt> or <non-pin> schemes
                          <compat> | e.g. Flask~=1.1.2
                          <gt>     | e.g. Flask>=1.1.2
                          <no-pin> | e.g. Flask

例子

pipreqs ./proj --encoding=utf8 --force
  • Windows 下为了避免编码问题,加上 --encoding=utf8 参数。
  • 加上 --force 参数,覆盖之前的 requirements.txt。

执行完,就会生成 ./proj/requirements.txt


相关文章