Python如何快速生成本項目的requeirments.txt實現
在Python項目中,我們通常需要使用許多第三方庫來提供額外的功能和工具。但是,直接將這些庫上傳到Git倉庫并不是一種好的做法,因為這會使得代碼庫變得過于臃腫,并且很難管理。此外,有時候在部署應用程序時也需要安裝特定版本的依賴項。
這時候,就可以使用requirements.txt文件來管理項目所需的依賴項。該文件列出了項目所需的所有依賴項及其版本號,使得其他人可以輕松地安裝和運行該項目所需的所有依賴項。使用pip命令讀取該文件,可以自動下載并安裝所有列出的依賴項,這大大簡化了項目啟動/部署的流程。
因此,生成requirements.txt文件對于管理Python項目的依賴項非常重要,它能夠確保項目的可重復性、可移植性和可維護性。
1.使用pipreqs生成requeirments.txt
在項目根目錄下打開終端,運行以下命令安裝pipreqs:
pip install pipreqs
運行以下命令生成requirements.txt文件:
pipreqs . --encoding=utf8 --force
其中,.表示當前目錄,–encoding=utf8指定編碼為UTF-8,–force選項強制覆蓋已存在的requirements.txt文件。
等待執(zhí)行完畢,即可在項目根目錄下看到生成的requirements.txt文件。
2.使用pip
要使用pip生成當前Python項目的requirements.txt文件,請按照以下步驟操作:
1.確保你已經安裝了pip和虛擬環(huán)境。
2.在虛擬環(huán)境中打開終端,并進入到項目的根目錄下。
3.運行以下命令,生成包含所有依賴項的requirements.txt文件:
pip freeze > requirements.txt
執(zhí)行完畢后,你可以在項目的根目錄下看到一個名為requirements.txt的文本文件,其中包含了所有依賴項及其版本號。
需要注意的是,pip freeze命令會將所有安裝的包及其版本信息輸出到控制臺。通過重定向符號>將輸出結果寫入到文件中,就能夠生成requirements.txt文件。但是,該文件中可能包含一些不必要的依賴項,如系統(tǒng)自帶的庫、測試工具等。因此,在使用生成的requirements.txt文件時,建議手動檢查并刪除不必要的依賴項,以減小項目體積。
以下是生成的requirements.txt文件,可以看到,有好多不必要的依賴項被生成
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 h5py @ file:///C:/ci/h5py_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
到此這篇關于Python如何快速生成本項目的requeirments.txt實現的文章就介紹到這了,更多相關Python 生成本項目的requeirments.txt內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python 實現將文件或文件夾用相對路徑打包為 tar.gz 文件的方法
今天小編就為大家分享一篇python 實現將文件或文件夾用相對路徑打包為 tar.gz 文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06Python?flask?sqlalchemy的簡單使用及常用操作
這篇文章主要介紹了Python?flask?sqlalchemy的簡單使用及常用操作,在python中,常用的ORM工具就是sqlalchemy了。下面就以一個簡單的flask例子來說明吧,需要的小伙伴可以參考一下2022-08-08PyCharm 2021.2 (Professional)調試遠程服務器程序的操作技巧
本文給大家分享用 PyCharm 2021 調試遠程服務器程序的過程,通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2021-08-08