最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python一行命令實(shí)現(xiàn)自動(dòng)生成?requirements.txt

 更新時(shí)間:2026年03月04日 09:12:35   作者:林九生  
一個(gè)清晰、準(zhǔn)確的requirements.txt文件能夠記錄項(xiàng)目所依賴的所有第三方庫(kù)及其版本,下面我們就來(lái)看看如何使用Python一行命令實(shí)現(xiàn)自動(dòng)生成?requirements.txt吧

在 Python 項(xiàng)目開(kāi)發(fā)中,我們經(jīng)常需要生成 requirements.txt 文件,用于:

  • 項(xiàng)目部署
  • Docker 構(gòu)建
  • 服務(wù)器上線
  • 團(tuán)隊(duì)協(xié)作

很多人直接使用:

pip freeze > requirements.txt

但這樣會(huì)把當(dāng)前環(huán)境的所有包都導(dǎo)出來(lái),包括根本沒(méi)用到的庫(kù),文件又大又亂。

今天給大家介紹一個(gè)更優(yōu)雅、更智能的工具 —— pipreqs

一、什么是 pipreqs

pipreqs 是一個(gè)根據(jù)項(xiàng)目源碼中 import 自動(dòng)生成 requirements.txt 的工具。

它只會(huì)生成你真正用到的依賴,不會(huì)把整個(gè)虛擬環(huán)境都打包進(jìn)去。

相比 pip freeze

工具特點(diǎn)
pip freeze導(dǎo)出全部環(huán)境依賴
pipreqs只導(dǎo)出項(xiàng)目實(shí)際使用依賴

二、安裝 pipreqs

pip install pipreqs

說(shuō)明:

  • 直接使用 pip 安裝即可
  • 支持 Python 3.x
  • 建議在虛擬環(huán)境中使用

三、一行命令生成 requirements.txt

進(jìn)入你的項(xiàng)目目錄,然后執(zhí)行:

pipreqs . --force

參數(shù)說(shuō)明:

參數(shù)作用
.當(dāng)前目錄
--force強(qiáng)制覆蓋已存在的 requirements.txt

執(zhí)行后,項(xiàng)目根目錄就會(huì)自動(dòng)生成:

requirements.txt

就這么簡(jiǎn)單!

四、pipreqs 工作原理

pipreqs 會(huì):

  • 掃描當(dāng)前目錄所有 .py 文件
  • 解析 import 語(yǔ)句
  • 匹配對(duì)應(yīng) PyPI 包名
  • 自動(dòng)生成 requirements.txt

例如:

import requests
import numpy
import pandas

生成結(jié)果:

numpy==1.26.4
pandas==2.2.1
requests==2.31.0

只包含你真正用到的依賴

五、常用高級(jí)用法

1.指定生成路徑

pipreqs ./your_project

2.忽略某些目錄

pipreqs . --ignore tests

3.使用國(guó)內(nèi)鏡像(推薦)

如果你在國(guó)內(nèi),建議加上:

pipreqs . --pypi-server https://pypi.tuna.tsinghua.edu.cn/simple

這樣解析更快。

六、pipreqs vs pip freeze 對(duì)比實(shí)戰(zhàn)

假設(shè)你的虛擬環(huán)境里安裝了 100 個(gè)包,但項(xiàng)目只用了 5 個(gè)。

使用 pip freeze:

100 個(gè)依賴

使用 pipreqs:

5 個(gè)依賴

優(yōu)點(diǎn):

  • 更干凈
  • 更專業(yè)
  • 更適合開(kāi)源項(xiàng)目
  • Docker 鏡像更小

七、注意事項(xiàng)

  • pipreqs 只能識(shí)別 import 語(yǔ)句
  • 動(dòng)態(tài)導(dǎo)入可能識(shí)別不到
  • 有些包名和 import 名不一致(例如 Pillow

遇到問(wèn)題可以手動(dòng)補(bǔ)充。

八、最佳實(shí)踐建議

開(kāi)發(fā)階段:使用 pipreqs 生成干凈依賴

部署階段:再用 pip freeze 做最終鎖版本

這樣最穩(wěn)。

九、總結(jié)

兩行命令解決依賴管理問(wèn)題:

pip install pipreqs
pipreqs . --force
  • 自動(dòng)分析項(xiàng)目
  • 只生成真實(shí)依賴
  • 更專業(yè)的 requirements.txt
  • 部署更輕量

十、為什么 pipreqs 識(shí)別不到數(shù)據(jù)庫(kù)依賴

很多同學(xué)會(huì)遇到一個(gè)問(wèn)題:明明項(xiàng)目用了數(shù)據(jù)庫(kù),結(jié)果生成的 requirements.txt 里沒(méi)有 psycopg2?

例如項(xiàng)目里使用了 PostgreSQL:

import psycopg2

但有時(shí)候生成的文件里卻沒(méi)有:

psycopg2

這是為什么呢?

原因分析

1.動(dòng)態(tài)導(dǎo)入或框架間接依賴

如果你沒(méi)有直接寫:

import psycopg2

而是使用了:

  • Django
  • SQLAlchemy
  • Flask + 插件

例如:

DATABASES = {
    "ENGINE": "django.db.backends.postgresql"
}

這類字符串配置方式,pipreqs識(shí)別不到的。

因?yàn)樗环治?import 語(yǔ)句。

2.驅(qū)動(dòng)是可選依賴

很多 ORM 框架不會(huì)強(qiáng)制安裝數(shù)據(jù)庫(kù)驅(qū)動(dòng)。

例如:

  • Django 不會(huì)自動(dòng)安裝 psycopg2
  • SQLAlchemy 也不會(huì)自動(dòng)安裝數(shù)據(jù)庫(kù)驅(qū)動(dòng)

驅(qū)動(dòng)屬于:可選運(yùn)行時(shí)依賴

而不是源碼級(jí) import 依賴。

解決方案

方案一:手動(dòng)補(bǔ)充(推薦)

直接在生成后手動(dòng)添加:

psycopg2-binary==2.9.9

生產(chǎn)環(huán)境推薦:

psycopg2

開(kāi)發(fā)環(huán)境推薦:

psycopg2-binary

方案二:顯式 import(不太優(yōu)雅)

你可以在某個(gè)文件里寫:

import psycopg2

這樣 pipreqs 就能識(shí)別到了。

但這種方式:

  • 不夠優(yōu)雅
  • 會(huì)污染代碼結(jié)構(gòu)

不太推薦。

方案三:使用 pipreqs + pip freeze 結(jié)合

最佳實(shí)踐流程:

# 第一步:生成干凈依賴
pipreqs . --force

# 第二步:確認(rèn)數(shù)據(jù)庫(kù)驅(qū)動(dòng)
pip freeze | grep psycopg2

如果缺失,手動(dòng)追加即可。

延伸說(shuō)明:其他常見(jiàn)識(shí)別不到的庫(kù)

除了 psycopg2,以下場(chǎng)景也常見(jiàn):

場(chǎng)景舉例
數(shù)據(jù)庫(kù)驅(qū)動(dòng)mysqlclient、psycopg2
WSGI 服務(wù)器gunicorn
ASGI 服務(wù)器uvicorn
任務(wù)隊(duì)列celery
生產(chǎn)工具redis

這些通常:

  • 運(yùn)行時(shí)依賴
  • 部署依賴
  • 不一定在源碼中 import

十一、深入理解依賴分類

其實(shí)依賴可以分為三類:

代碼依賴(pipreqs 能識(shí)別)

import requests
import pandas

運(yùn)行依賴(pipreqs 識(shí)別不到)

數(shù)據(jù)庫(kù)驅(qū)動(dòng)

WSGI 服務(wù)器

消息隊(duì)列客戶端

系統(tǒng)依賴(pip 管不了)

PostgreSQL 服務(wù)

Redis 服務(wù)

Nginx

十二、最佳企業(yè)實(shí)踐建議

在實(shí)際公司項(xiàng)目中,推薦做法:

開(kāi)發(fā)階段

pipreqs 生成干凈 requirements.txt

測(cè)試 / 發(fā)布階段

pip freeze > requirements-prod.txt

或者:

使用 Poetry / Pipenv 管理完整鎖版本

這樣:

  • 開(kāi)發(fā)清爽
  • 部署穩(wěn)定
  • CI/CD 更安全

十三、總結(jié)

pipreqs 非常適合:

  • 開(kāi)源項(xiàng)目
  • 教學(xué)項(xiàng)目
  • 輕量項(xiàng)目
  • 想要干凈依賴的人

但記住一句話:pipreqs 只認(rèn) import,不認(rèn)運(yùn)行環(huán)境。

數(shù)據(jù)庫(kù)驅(qū)動(dòng)、服務(wù)器組件這類依賴,一定要人工確認(rèn)。

以上就是Python一行命令實(shí)現(xiàn)自動(dòng)生成 requirements.txt的詳細(xì)內(nèi)容,更多關(guān)于Python生成requirements.txt文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python如何操作docker redis過(guò)程解析

    Python如何操作docker redis過(guò)程解析

    這篇文章主要介紹了Python如何操作docker redis過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Python描述器descriptor詳解

    Python描述器descriptor詳解

    這篇文章主要向我們?cè)敿?xì)介紹了Python描述器descriptor,需要的朋友可以參考下
    2015-02-02
  • 教你怎么用python繪制dotplot

    教你怎么用python繪制dotplot

    這篇文章主要介紹了教你怎么用python繪制dotplot,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-04-04
  • 詳解OpenMV圖像處理的基本方法

    詳解OpenMV圖像處理的基本方法

    這篇文章主要介紹了OpenMV圖像處理的基本方法,包括感光元件的相關(guān)知識(shí)介紹,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-11-11
  • 利用Python實(shí)現(xiàn)在同一網(wǎng)絡(luò)中的本地文件共享方法

    利用Python實(shí)現(xiàn)在同一網(wǎng)絡(luò)中的本地文件共享方法

    今天小編就為大家分享一篇利用Python實(shí)現(xiàn)在同一網(wǎng)絡(luò)中的本地文件共享方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • python中halcon環(huán)境配置的詳細(xì)步驟

    python中halcon環(huán)境配置的詳細(xì)步驟

    這篇文章主要為大家詳細(xì)介紹了python中halcon環(huán)境配置的詳細(xì)步驟,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以了解一下
    2025-06-06
  • PyPy?如何讓Python代碼運(yùn)行得和C一樣快

    PyPy?如何讓Python代碼運(yùn)行得和C一樣快

    這篇文章主要介紹了如何讓Python代碼運(yùn)行得和C一樣快,由于?PyPy?只是?Python?的一種替代實(shí)現(xiàn),大多數(shù)時(shí)候它都是開(kāi)箱即用,無(wú)需對(duì)?Python?項(xiàng)目進(jìn)行任何更改。它與?Web?框架?Django、科學(xué)計(jì)算包?Numpy?和許多其他包完全兼容,推薦大家多多使用
    2022-01-01
  • Python如何根據(jù)頁(yè)碼處理PDF文件的內(nèi)容

    Python如何根據(jù)頁(yè)碼處理PDF文件的內(nèi)容

    在Python中,fitz庫(kù)可以用于多種任務(wù),如打開(kāi)PDF文件、遍歷頁(yè)面、添加注釋、提取文本、旋轉(zhuǎn)頁(yè)面等,此外,它還可以用于在PDF頁(yè)面上添加高亮注釋、提取圖像等操作,這篇文章主要介紹了Python根據(jù)頁(yè)碼處理PDF文件的內(nèi)容,需要的朋友可以參考下
    2024-06-06
  • Python?curl_cffi庫(kù)從入門到精通詳解

    Python?curl_cffi庫(kù)從入門到精通詳解

    curl_cffi 是一個(gè)Python庫(kù),它通過(guò)CFFI提供了對(duì)curl-impersonate的綁定,使得HTTP客戶端能夠模仿瀏覽器的TLS/JA3和HTTP/2指紋,這篇文章主要介紹了Python?curl_cffi庫(kù)從入門到精通的相關(guān)資料,需要的朋友可以參考下
    2025-09-09
  • python Django框架中的嵌套序列化器詳解

    python Django框架中的嵌套序列化器詳解

    在Web開(kāi)發(fā)領(lǐng)域,創(chuàng)建和使用API(應(yīng)用程序編程接口)是很常見(jiàn)的,Django Rest Framework(DRF)是一個(gè)強(qiáng)大的工具包,在DRF中,一個(gè)關(guān)鍵概念是序列化器,在本文中,我們將深入研究Django中嵌套序列化器的概念以及它們?nèi)绾未龠M(jìn)復(fù)雜數(shù)據(jù)關(guān)系的處理,需要的朋友可以參考下
    2023-10-10

最新評(píng)論

微博| 安义县| 辉南县| 佛坪县| 万安县| 隆昌县| 禄劝| 阿克| 金沙县| 原阳县| 大邑县| 曲水县| 保德县| 色达县| 桐城市| 吉木乃县| 南川市| 岳西县| 扶风县| 杨浦区| 广丰县| 勃利县| 社旗县| 靖州| 当雄县| 元谋县| 安岳县| 玉山县| 大连市| 黄梅县| 柘荣县| 明星| 贺州市| 凤山市| 外汇| 武汉市| 赤峰市| 永康市| 博乐市| 温宿县| 临汾市|