In Python projects, we usually need to use many third-party libraries to provide additional functions and tools. However, it is not a good practice to upload these libraries directly to the Git repository, because it will make the code base too bloated and difficult to manage. Additionally, sometimes you need to install specific versions of dependencies when deploying your application.
At this time, you can use the requirements.txt file to manage the dependencies required by the project. This file lists all the dependencies required by the project along with their version numbers, making it easy for others to install and run all the dependencies required for the project. Reading this file using the pip command automatically downloads and installs all listed dependencies, which greatly simplifies the project startup/deployment process.
Therefore, generating the requirements.txt file is very important for managing the dependencies of Python projects, which can ensure the reproducibility, portability and maintainability of the project.
Open a terminal in the project root directory and run the following command to install pipreqs:
pip install pipreqs
Run the following command to generate the requirements.txt file:
pipreqs . --encoding=utf8 --force
Among them, . represents the current directory, –encoding=utf8 specifies the encoding as UTF-8, and the –force option forces overwriting of the existing requirements.txt document.
Wait until the execution is completed, and you can see the generated requirements.txt file in the project root directory.
To use pip to generate the requirements.txt file for the current Python project, please follow the steps below:
1. Make sure you have installed pip and virtual environment.
2. Open the terminal in the virtual environment and enter the root directory of the project.
3. Run the following command to generate a requirements.txt file containing all dependencies:
pip freeze > requirements.txt
After execution, you can Below you will see a text file named requirements.txt, which contains all dependencies and their version numbers.
It should be noted that the pip freeze command will output all installed packages and their version information to the console. The requirements.txt file can be generated by writing the output results to a file using the redirection symbol >. However, this file may contain some unnecessary dependencies, such as libraries and test tools that come with the system. Therefore, when using the generated requirements.txt file, it is recommended to manually check and delete unnecessary dependencies to reduce the project size.
The following is the generated requirements.txt file. You can see that many unnecessary dependencies are generated
absl-py==1.0.0 addict==2.4.0 aiohttp==3.7.4.post0 alembic==1.8.1 argon2-cffi @ file:///opt/conda/conda-bld/argon2-cffi_1645000214183/work argon2-cffi-bindings @ file:///C:/ci/argon2-cffi-bindings_1644569848815/work astunparse==1.6.3 async-timeout==3.0.1 attrs @ file:///opt/conda/conda-bld/attrs_1642510447205/work backcall @ file:///home/ktietz/src/ci/backcall_1611930011877/work beautifulsoup4 @ file:///tmp/build/80754af9/beautifulsoup4_1631874778482/work bilibili-api==5.1.2 bleach @ file:///opt/conda/conda-bld/bleach_1641577558959/work blinker==1.5 cachetools==5.0.0 certifi @ file:///C:/b/abs_85o_6fm0se/croot/certifi_1671487778835/work/certifi cffi @ file:///C:/ci_310/cffi_1642682485096/work chardet==4.0.0 charset-normalizer==2.0.12 click @ file:///C:/ci/click_1646038601470/work cloudpickle @ file:///tmp/build/80754af9/cloudpickle_1632508026186/work colorama @ file:///tmp/build/80754af9/colorama_1607707115595/work cryptography @ file:///C:/ci/cryptography_1652101770956/work cycler==0.11.0 cytoolz==0.11.0 dask==1.1.4 debugpy @ file:///C:/ci/debugpy_1637091911212/work decorator @ file:///opt/conda/conda-bld/decorator_1643638310831/work defusedxml @ file:///tmp/build/80754af9/defusedxml_1615228127516/work dnspython==2.3.0 docopt==0.6.2 einops==0.4.1 email-validator==1.3.1 entrypoints==0.3 fastjsonschema @ file:///tmp/build/80754af9/python-fastjsonschema_1620414857593/work/dist Flask==2.2.3 Flask-Email==1.4.4 Flask-Mail==0.9.1 Flask-Migrate==3.1.0 Flask-Script==2.0.6 Flask-SQLAlchemy @ file:///tmp/build/80754af9/flask-sqlalchemy_1616180561581/work Flask-WTF==1.1.1 flatbuffers==23.1.21 fonttools==4.30.0 fvcore==0.1.5.post20220305 gast==0.4.0 google-auth==2.6.5 google-auth-oauthlib==0.4.6 google-pasta==0.2.0 greenlet @ file:///C:/ci/greenlet_1628888257991/work grpcio==1.45.0 grpcio-tools==1.45.0 h6py @ file:///C:/ci/h6py_1659089886851/work idna==3.3 imagecodecs @ file:///C:/ci/imagecodecs_1635529223557/work imageio @ file:///tmp/build/80754af9/imageio_1617700267927/work importlib-metadata @ file:///C:/ci/importlib-metadata_1648562631189/work importlib-resources==5.9.0 iopath==0.1.9 ipykernel @ file:///C:/ci/ipykernel_1647000985174/work/dist/ipykernel-6.9.1-py3-none-any.whl ipython @ file:///C:/ci/ipython_1643800131373/work ipython-genutils @ file:///tmp/build/80754af9/ipython_genutils_1606773439826/work ipywidgets @ file:///tmp/build/80754af9/ipywidgets_1634143127070/work itsdangerous @ file:///tmp/build/80754af9/itsdangerous_1621432558163/work jedi @ file:///C:/ci/jedi_1644297241925/work Jinja2 @ file:///C:/b/abs_7cdis66kl9/croot/jinja2_1666908141852/work joblib @ file:///C:/b/abs_e60_bwl1v6/croot/joblib_1666298845728/work jsonschema @ file:///Users/ktietz/demo/mc3/conda-bld/jsonschema_1630511932244/work jupyter==1.0.0 jupyter-client @ file:///opt/conda/conda-bld/jupyter_client_1643638337975/work jupyter-console @ file:///opt/conda/conda-bld/jupyter_console_1647002188872/work jupyter-core @ file:///C:/ci/jupyter_core_1646976467633/work jupyterlab-pygments @ file:///tmp/build/80754af9/jupyterlab_pygments_1601490720602/work jupyterlab-widgets @ file:///tmp/build/80754af9/jupyterlab_widgets_1609884341231/work keras==2.11.0 kiwisolver @ file:///C:/ci/kiwisolver_1653274189334/work labelme==3.16.7 libclang==15.0.6.1 loguru @ file:///C:/ci/loguru_1643616607274/work lxml==4.6.5 Mako==1.2.2 Markdown==3.3.6 MarkupSafe @ file:///C:/ci/markupsafe_1654508076077/work matplotlib==3.5.1 matplotlib-inline @ file:///tmp/build/80754af9/matplotlib-inline_1628242447089/work mistune @ file:///C:/ci/mistune_1594373272338/work mkl-fft==1.3.1 mkl-random @ file:///C:/ci/mkl_random_1626186163140/work mkl-service==2.4.0 mmcv==1.6.2 multidict==6.0.2 nbclient @ file:///tmp/build/80754af9/nbclient_1645431659072/work nbconvert @ file:///C:/ci/nbconvert_1649759177374/work nbformat @ file:///C:/ci/nbformat_1649845122517/work nest-asyncio @ file:///C:/ci/nest-asyncio_1649848126026/work networkx==2.2 notebook @ file:///C:/ci/notebook_1645002740769/work numpy @ file:///C:/ci/numpy_and_numpy_base_1649782933444/work oauthlib==3.2.0 opencv-python==4.5.5.64 openslide-python==1.2.0 opt-einsum==3.3.0 packaging @ file:///tmp/build/80754af9/packaging_1637314298585/work pandas==1.3.5 pandocfilters @ file:///opt/conda/conda-bld/pandocfilters_1643405455980/work parso @ file:///opt/conda/conda-bld/parso_1641458642106/work pickleshare @ file:///tmp/build/80754af9/pickleshare_1606932040724/work Pillow==9.0.1 pipreqs==0.4.11 portalocker==2.4.0 prettytable==3.3.0 prometheus-client @ file:///opt/conda/conda-bld/prometheus_client_1643788673601/work prompt-toolkit @ file:///tmp/build/80754af9/prompt-toolkit_1633440160888/work protobuf==3.19.6 pyasn1==0.4.8 pyasn1-modules==0.2.8 pycparser @ file:///tmp/build/80754af9/pycparser_1636541352034/work pyecharts==1.9.1 pygame==2.2.0 Pygments @ file:///opt/conda/conda-bld/pygments_1644249106324/work PyMySQL @ file:///C:/ci/pymysql_1610464946597/work pyparsing==3.0.7 PyQt5-Qt5==5.15.2 PyQt5-sip==12.9.1 pyrsistent @ file:///C:/ci/pyrsistent_1636093257833/work pytesseract==0.3.10 python-dateutil @ file:///tmp/build/80754af9/python-dateutil_1626374649649/work pytz @ file:///C:/Windows/TEMP/abs_90eacd4e-8eff-491e-b26e-f707eba2cbe1ujvbhqz1/croots/recipe/pytz_1654762631027/work PyWavelets @ file:///C:/ci/pywavelets_1648728036674/work pywin32==302 pywinpty @ file:///C:/ci_310/pywinpty_1644230983541/work/target/wheels/pywinpty-2.0.2-cp37-none-win_amd64.whl PyYAML==6.0 pyzmq @ file:///C:/ci/pyzmq_1638435182681/work qtconsole @ file:///opt/conda/conda-bld/qtconsole_1649078897110/work QtPy @ file:///opt/conda/conda-bld/qtpy_1649073884068/work regex==2022.10.31 requests==2.27.1 requests-oauthlib==1.3.1 rsa==4.8 scikit-image @ file:///C:/ci/scikit-image_1648196140109/work scikit-learn @ file:///C:/ci/scikit-learn_1642599122269/work scipy @ file:///C:/ci/scipy_1641555141383/work seaborn==0.11.2 Send2Trash @ file:///tmp/build/80754af9/send2trash_1632406701022/work sip==4.19.13 six @ file:///tmp/build/80754af9/six_1644875935023/work soupsieve @ file:///tmp/build/80754af9/soupsieve_1636706018808/work SQLAlchemy @ file:///C:/Windows/Temp/abs_f8661157-660b-49bb-a790-69ab9f3b8f7c8a8s2psb/croots/recipe/sqlalchemy_1657867864564/work tabulate==0.8.9 tensorboard==2.11.2 tensorboard-data-server==0.6.1 tensorboard-plugin-wit==1.8.1 tensorflow==2.11.0 tensorflow-estimator==2.11.0 tensorflow-intel==2.11.0 tensorflow-io-gcs-filesystem==0.31.0 termcolor==1.1.0 terminado @ file:///C:/ci/terminado_1644322782754/work testpath @ file:///tmp/build/80754af9/testpath_1624638946665/work thop==0.0.31.post2005241907 threadpoolctl @ file:///Users/ktietz/demo/mc3/conda-bld/threadpoolctl_1629802263681/work tifffile @ file:///tmp/build/80754af9/tifffile_1627275862826/work timm==0.6.7 toolz @ file:///tmp/build/80754af9/toolz_1636545406491/work torch==1.9.1+cu102 torchaudio==0.9.1 torchmetrics==0.9.3 torchstat==0.0.7 torchvision==0.10.1+cu102 tornado @ file:///C:/ci/tornado_1606935947090/work tqdm==4.63.0 traitlets @ file:///tmp/build/80754af9/traitlets_1636710298902/work typing_extensions @ file:///opt/conda/conda-bld/typing_extensions_1647553014482/work urllib3==1.26.9 wcwidth @ file:///Users/ktietz/demo/mc3/conda-bld/wcwidth_1629357192024/work webencodings==0.5.1 Werkzeug==2.2.3 widgetsnbextension @ file:///C:/ci/widgetsnbextension_1645009553925/work win32-setctime @ file:///home/tkoch/Workspace/win32_setctime/win32_setctime_1643630045199/work wincertstore==0.2 wrapt==1.15.0 WTForms==3.0.1 xlwt==1.3.0 yacs==0.1.8 yapf==0.32.0 yarg==0.1.9 yarl==1.7.2 zipp @ file:///C:/ci/zipp_1652274072582/work
The above is the detailed content of How to quickly generate requests.txt for this project in Python. For more information, please follow other related articles on the PHP Chinese website!