【Python基礎】一文搞懂:Python 中 “requirements.txt“ 文件生成和使用

文章目錄

    • 1 引言
    • 2 什么是 `requirements.txt`?
    • 3 如何生成 `requirements.txt`?
      • 3.1 方法一:使用 pip freeze
      • 3.2 方法二:使用 pipreqs
    • 3.3 使用 pip freeze 和 pipreqs 的對比
    • 4 如何使用 `requirements.txt`?
      • 4.1 安裝依賴
      • 4.2 更新依賴
    • 5 總結

1 引言

在 Python 項目開發中,requirements.txt 文件扮演著至關重要的角色,它記錄了項目所需的所有依賴包及其精確版本號。這確保了代碼在不同環境中都能以預期的方式運行。本文將深入探討如何生成和使用 requirements.txt 文件,幫助您在 Python 項目管理中更加得心應手。

2 什么是 requirements.txt

requirements.txt 是一個文本文件,列出了所有必須安裝的庫,以便于在新環境中復制相同的設置。它通常包括庫的名稱和版本號,格式如下:

flask==1.1.2
requests==2.24.0

3 如何生成 requirements.txt

3.1 方法一:使用 pip freeze

最簡單的生成方法是使用 pip freeze 命令。這個命令會列出當前環境中所有已安裝的包及其版本號。

在命令行中運行:

pip freeze > requirements.txt

這將會創建一個包含所有依賴項的 requirements.txt 文件。

3.2 方法二:使用 pipreqs

pipreqs 是一個更智能的工具,它根據項目文件中的實際導入來生成依賴列表。

首先安裝 pipreqs

pip install pipreqs

然后在項目根目錄下運行:

pipreqs . --encoding=utf8

或者

pipreqs ./ --encoding utf-8

pipreqs 會在項目文件夾中創建一個 requirements.txt 文件,只包含項目實際使用的依賴。

3.3 使用 pip freeze 和 pipreqs 的對比

在生成 requirements.txt 文件時,pip freezepipreqs 是兩種常用的方法,但它們在使用上有著顯著的差異。以下是這兩種方法的對比,幫助您根據項目需求選擇最合適的工具。

pip freeze

pip freeze 生成的 requirements.txt 包含了當前環境中所有已安裝的庫及其版本號。這種方法的主要特點是:

  • 簡單直接:只需一個命令,即可列出所有安裝的包。
  • 全面性:生成的文件包括所有包,無論它們是否直接用于項目。
  • 適用場景:最適合小型項目或在虛擬環境中工作時使用。

優點

  • 快速且易于操作。
  • 確保了環境一致性,因為它列出了所有包。

缺點

  • 可能包含不必要的依賴,導致項目膨脹。
  • 如果不是在虛擬環境中運行,可能會包含全局安裝的包,與項目無關。

pipreqs

pip freeze 不同,pipreqs 會分析項目文件,僅列出項目實際使用的依賴。它的特點包括:

  • 智能分析:基于項目代碼分析依賴項。
  • 輕量結果:僅包含項目需要的依賴,避免不必要的包。
  • 適用場景:適合較大的項目或需要精確依賴管理的情況。

優點

  • 生成的 requirements.txt 更準確,不包含冗余依賴。
  • 減少了項目大小,提高了安裝速度。

缺點

  • 分析過程可能需要更多時間。
  • 某些情況下可能無法檢測到間接依賴。

小結:
選擇 pip freeze 還是 pipreqs 取決于您的具體需求。對于在干凈的虛擬環境中開發的小型項目,pip freeze 可能是最好的選擇。而對于更大的項目,或當您需要更準確地控制依賴時,pipreqs 可能更適合。無論選擇哪種方法,定期更新 requirements.txt 以反映最新的依賴狀態始終是一個好習慣。

4 如何使用 requirements.txt

4.1 安裝依賴

在新環境部署項目時,您可以使用 requirements.txt 文件輕松安裝所有依賴項。只需運行:

pip install -r requirements.txt

4.2 更新依賴

項目開發過程中,依賴包可能會更新。您應定期更新 requirements.txt 文件,以確保使用最新的依賴版本。更新后,使用相同的安裝命令應用更改。

5 總結

requirements.txt 文件是 Python 項目管理的一個關鍵組成部分。掌握如何生成和使用這個文件,將大大提高您在不同開發環境中工作的效率。無論是個人項目還是團隊協作,正確使用 requirements.txt 都是確保項目順利運行的有效途徑。


希望這篇文章對您理解和使用 requirements.txt 有所幫助。如果您有任何問題或建議,請在評論區留言,讓我們共同進步!

作者:climber1121
鏈接:https://blog.csdn.net/climber1121
來源:CSDN
版權聲明:本文為博主原創文章,轉載請附上原文出處鏈接和本聲明。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/18371.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/18371.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/18371.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[從零開發JS應用] 如何在VScode中配置Javascript環境,常見的調試方法有哪些?

一、安裝VSCode和Node.js 記錄環境配置:本文配置的環境主要針對單獨JS文件的斷點調試,主要是為了調試LeetCode里面的代碼。 首先在官網下載對應的版本:https://nodejs.org/en/ 開始安裝,可以自定義選擇安裝路徑。 這里選擇Add Pa…

【親測,安卓版】快速將網頁網址打包成安卓app,一鍵將網頁打包成app,免安裝純綠色版本,快速將網頁網址打包成安卓apk

背景:部分客戶需求將自己網站打包成app,供用戶在瀏覽器安裝使用、 網頁網址快速生成app 準備材料操作流程第一步:打開HBuilder X新建項目第二步創建Wap2App項目第三步修改App圖標第四步發布app第五步查看apk 準備材料 1.需要打包的網頁 2.ap…

在網頁開發中,前后端如何更好地協同工作?

在網頁開發中,前后端如何更好地協同工作是非常關鍵的,以下是一些方法和技巧可以幫助前后端更好地協同工作: 1.明確需求和規范:前后端應該共同討論和明確項目的需求和規范,包括功能、界面、數據格式等。確保雙方對項目…

頁面加載不出來,報錯[@umijs/runtime] load component failed

問題描述 頁面加載不出來數據,一直在旋轉,控制臺輸出內容如下: 原因分析: 之前頁面是沒有問題的,在寫當前頁面突然出現頁面加載不出來,控制臺報錯,主要是頁面引入了這行代碼報錯 import { …

MX Component基礎使用(多點位讀取,多點位寫入)

步驟,先連接PLC,然后在填入對應的點位 D10 然后去讀取。 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;us…

邊緣計算網關的主要功能有哪些?天拓四方

隨著物聯網(IoT)的快速發展和普及,邊緣計算網關已經成為了數據處理和傳輸的重要樞紐。作為一種集成數據采集、協議轉換、數據處理、數據聚合和遠程控制等多種功能的設備,邊緣計算網關在降低網絡延遲、提高數據處理效率以及減輕云數…

民國漫畫雜志《時代漫畫》第13期.PDF

時代漫畫13.PDF: https://url03.ctfile.com/f/1779803-1247458360-14efab?p9586 (訪問密碼: 9586) 《時代漫畫》的雜志在1934年誕生了,截止1937年6月戰爭來臨被迫停刊共發行了39期。 ps:資源來源網絡!

數組的定義、順序存儲及特殊矩陣的存儲

目錄 一、數組的定義 1.1概念 1.2抽象數據類型定義 二、數組的順序存儲 2.1一維數組元素的存儲位置 2.2二維數組元素的存儲位置 2.3三維數組元素的存儲位置 三、特殊矩陣的壓縮存儲 3.1相關概念 3.2對稱矩陣 3.3三角矩陣 3.4對角矩陣(帶狀矩陣&#xff0…

【機器學習300問】102、什么是混淆矩陣?

一、混淆矩陣的定義 混淆矩陣是一種用于評估分類模型性能的評估指標。當模型對數據進行預測并將數據分配到預定義的類別時,混淆矩陣提供了一種直觀的方式來總結這些預測與數據實際類別之間的對應關系。具體來說,它是一個表格。 二、分類模型性能評估一級…

私域用戶畫像分析

為什么做私域要分析用戶畫像? 1、更好地了解用戶需求:通過分析用戶畫像,可以深入了解用戶的需求、偏好、行為等特征,從而更好地滿足他們的需求。 2、個性化營銷:根據用戶畫像,可以為用戶提供個性化的營銷…

js setTimeout、setInterval、promise、async await執行順序梳理

基礎知識 async: 關鍵字用于標記一個函數為異步函數,該函數中有一個或多個promise對象,需要等待執行完成后才會繼續執行。 await:關鍵字,用于等待一個promise對象執行完,并返回其中的值,只能在async函數內部使用。可…

云服務器平臺AutoDL--基本介紹與使用感受

因為課程作業需要復現DreamBooth,找了幾個教程之后,發現了AutoDL這個好東西,蕪湖~ 相關概念 以下回答來自于ChatGPT。 云計算平臺:云服務器平臺是提供按需計算資源和服務的在線平臺,通常包括存儲、處理能力、數據庫、…

搜維爾科技:使用Haption Virtuose 6D 力反饋通過機器人和虛擬現實完成遠程操作項目

使用Haption Virtuose 6D 力反饋通過機器人和虛擬現實完成遠程操作項目 搜維爾科技:使用Haption Virtuose 6D 力反饋通過機器人和虛擬現實完成遠程操作項目

【Python設計模式06】代理模式

代理模式(Proxy Pattern)是一種結構型設計模式,它通過創建代理對象來控制對另一個對象的訪問。代理模式可以用于延遲實例化、控制訪問權限、記錄日志等。代理模式的核心思想是為其他對象提供一種代理,以控制對這個對象的訪問。 代…

System32文件夾千萬不能刪除,看完這篇你就知道為什么了

序言 C:\Windows\System32目錄是Windows操作系統的關鍵部分,重要的系統文件存儲在該目錄中。網上的一些惡作劇者可能會告訴你刪除它,但你不應該嘗試去操作,如果你嘗試的話,我們會告訴你會發生什么。 什么是System32文件夾 位于C:\Windows\System32的System32文件夾是所有…

Python深度學習:【模型系列】Transformer面試靈魂20問

1. transformer簡介 Transformer模型是一種基于自注意力機制的神經網絡架構,主要用于處理序列數據,如自然語言處理任務。它由Google在2017年提出,并在“Attention is All You Need”這篇論文中首次公開。Transformer模型的核心思想是利用自注意力機制來捕捉序列中的依賴關系…

MySQL 的表約束詳解

在數據庫設計中,約束(Constraints)是確保數據完整性和一致性的關鍵工具。MySQL 作為流行的關系型數據庫管理系統,提供了多種約束類型來維護數據的準確性和可靠性。本文將詳細探討 MySQL 的各種表約束,包括它們的定義、…

【代碼隨想錄】面試常考類型之動態規劃01背包

前言 更詳細的在大佬的代碼隨想錄 (programmercarl.com) 本系列僅是簡潔版筆記,為了之后方便觀看 不同的二叉搜索樹 96. 不同的二叉搜索樹 - 力扣(LeetCode) 通過舉例子發現重疊子問題 代碼很簡單,主要是思路問題&#xff0…

Windows內核函數 - 創建關閉注冊表

在驅動程序的開發中,經常會用到對注冊表的操作。與Win32的API不同,DDK提供另外一套對注冊表操作的相關函數。首先明確一下注冊表里的幾個概念,避免在后面混淆。 圖1 注冊表概念 有5個概念需要重申一下: * 注冊表項: 注…

008、字符串_內部編碼

字符串類型的內部編碼有3種: int:8個字節的長整型。 embstr:小于等于39個字節的字符串。 raw:大于39個字節的字符串。 Redis會根據當前值的類型和長度決定使用哪種內部編碼實現。 整數類型示例如下: 127.0.0.1:6379&…