詳解 `pip install -e .` 命令【PythonLinux】

詳解 pip install -e . 命令

pip install -e . 是 Python 開發中一個非常有用的命令,用于以"可編輯"或"開發"模式安裝當前目錄中的 Python 包。

命令分解

  • pip: Python 的包管理工具
  • install: pip 的子命令,用于安裝包
  • -e: 是 --editable 的縮寫,表示以可編輯模式安裝
  • .: 表示當前目錄,通常包含一個 Python 項目/包

工作原理

當執行 pip install -e . 時:

  1. pip 會查找當前目錄下的 setup.pypyproject.toml 文件
  2. 它會安裝該包,但不是將包文件復制到 Python 的 site-packages 目錄
  3. 而是在 site-packages 中創建一個鏈接(稱為 .pth 文件)指向你的項目目錄

setup.pypyproject.toml示例代碼

setup.py
from setuptools import setup, find_packagessetup(name="my_package",          # 包名稱version="0.1.0",            # 版本號packages=find_packages(),   # 自動發現所有包install_requires=[          # 依賴項'numpy>=1.20.0','pandas>=1.3.0',],extras_require={            # 可選依賴'dev': ['pytest>=6.0','black>=21.0',],},entry_points={              # 命令行工具'console_scripts': ['mycli=my_package.cli:main',],},
)
pyproject.toml
[build-system]
requires = ["setuptools>=42", "wheel"]
build-backend = "setuptools.build_meta"[project]
name = "my_package"
version = "0.1.0"
authors = [{name = "Your Name", email = "your.email@example.com"},
]
description = "A sample Python package"
readme = "README.md"
requires-python = ">=3.8"
classifiers = ["Programming Language :: Python :: 3","License :: OSI Approved :: MIT License","Operating System :: OS Independent",
]dependencies = ["numpy>=1.20.0","pandas>=1.3.0",
][project.optional-dependencies]
dev = ["pytest>=6.0","black>=21.0",
][project.scripts]
mycli = "my_package.cli:main"[tool.setuptools]
packages = ["my_package"]

主要優勢

? 即時修改生效:直接修改源代碼,無需重新安裝包
? 保持項目結構:項目文件保持原樣,不被復制到 site-packages
? 便于開發:特別適合開發自己的 Python 包或庫

典型使用場景

項目結構示例:

my_package/
├── setup.py
├── my_package/
│ ├── init.py
│ └── module.py

執行流程:

  1. 在項目根目錄執行 pip install -e .
  2. 可在任何 Python 環境中 import my_package
  3. 修改 module.py 后,更改會立即生效

技術細節

🔧 在 site-packages 中會創建:

  • .egg-link 文件(指向項目目錄)
  • easy-install.pth 文件(包含項目路徑)
    📦 包的元數據會被正常安裝到 site-packages

與常規安裝的區別

特性pip install .pip install -e .
文件位置復制到 site-packages保留在原位置
修改后是否需要重裝需要不需要
適合階段生產環境開發環境

注意事項

?? 項目必須包含有效的 setup.pypyproject.toml
?? 依賴項會被正常安裝(與常規安裝相同)
?? Windows 可能創建 .pth 文件而非符號鏈接
?? 卸載使用 pip uninstall package_name

總結

pip install -e .是 Python 開發的高效工具,特別適合:
🔧 開發自有庫/應用
? 提升開發效率
🔄 避免重復安裝

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

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

相關文章

將VSCode的配置遷移到Cursor

目錄 方式一:一鍵導入配置 1.適用場景 2.導入前的配置 3.導入步驟 4.查看導入效果 5.原理 6.注意 方式二:手動遷移配置文件 1.使用場景 2.導入步驟 3.注意 方式一:一鍵導入配置 1.適用場景 VSCode和Cursor這兩個編輯器&#xff0…

大規模流媒體系統架構實踐

📋 文章目錄 系統概述 - 流媒體系統的基本挑戰整體架構設計 - 分層架構與核心組件接入層設計 - CDN與負載均衡策略處理層架構 - 實時轉碼與分發存儲層優化 - 多級緩存與熱點數據監控與運維 - 全鏈路監控體系實戰經驗總結 - 踩坑指南與最佳實踐 🎬 系統概…

Vue 3 + Vite 項目 px 轉 vw 完整使用指南

Vue 3 Vite 項目 px 轉 vw 完整使用指南 🚀 第一步:插件安裝 1.1 安裝命令 # 使用 npm 安裝 npm install postcss-px-to-viewport-8-plugin --save-dev# 或使用 yarn 安裝 yarn add postcss-px-to-viewport-8-plugin --dev# 或使用 pnpm 安裝 pnpm a…

setsate()使用詳解原理及注意事項

📚 Flutter 狀態管理系列文章目錄 Flutter 狀態管理(setState、InheritedWidget、 Provider 、Riverpod、 BLoC / Cubit、 GetX 、MobX 、Redux) setState() 使用詳解:原理及注意事項 InheritedWidget 組件使用及原理 Flutter 中 Provider 的使用、注…

ffmpeg環境配置

ffmpeg是一個跨平臺功能強大的音視頻處理工具。它不僅能夠進行音視頻的轉換、剪切、合并等操作,還支持多種音視頻格式的解碼和編碼。無論是處理高清視頻還是音頻文件,ffmpg都能提供高效且穩定的服務。其豐富的參數設置和插件支持,使得用戶可以…

Lamp和友點CMS一鍵部署腳本(Rocky linux)

先上傳youdiancms9.3.0.zip包,可以去官網下載 #!/bin/bash #function:install apache mysql php for youdiancms9.3.0ip$(hostname -I | awk {print $1}) yhyoudian passwordyoudian123#檢查是否為root用戶 if [ "$USER" ! "root" ]; thenecho…

Arm架構下麒麟V10桌面版安裝MySQL

Arm架構下麒麟V10桌面版安裝MySQL 文章目錄 Arm架構下麒麟V10桌面版安裝MySQL基礎環境下載安裝包安裝步驟**一、準備工作****二、解壓并配置 MySQL****三、初始化 MySQL****四、啟動 MySQL 服務****五、設置環境變量****六、配置 MySQL****七、驗證安裝****常見問題****總結** …

Science Advances:皮膚附著觸覺貼片,實現多功能和增強的觸覺交互

可穿戴觸覺界面可以通過向皮膚添加觸覺刺激以及傳遞給用戶的視覺和聽覺信息來增強虛擬/增強現實系統中的沉浸式體驗。研究人員介紹了一種平錐介電彈性體致動器(FCDEA)陣列,該陣列薄而柔軟,能夠響應大面積皮膚上的電壓信號產生時空…

Ntfs!LfsGetLbcb函數分析之nt!CcPreparePinWrite

Ntfs!LfsGetLbcb函數分析之nt!CcPreparePinWrite 第一部分: 1: kd> p Ntfs!LfsPrepareLfcbForLogRecord0x78: f7179d72 e891210000 call Ntfs!LfsGetLbcb (f717bf08) 1: kd> t Ntfs!LfsGetLbcb: f717bf08 6a40 push 40h 1: kd> kc …

面試150 整數轉羅馬數字

思路 建立數字和字符的字典映射表&#xff0c;遍歷映射表做差&#xff0c;將字符添加到結果中&#xff0c;當差為0的時候&#xff0c;break退出循環。返回最后的結果output class Solution:def intToRoman(self, num: int) -> str:if num<1:return num_to_map[(1000,M)…

大模型推理-高通qnn基礎

一、高通ai 軟件的介紹 QualcommAI Engine Direct SDK(qnn) 提供較低級別、高度可定制的統一API&#xff0c;通過單獨的庫加速所有AI加速器核心上的AI模型, 可以直接用于針對特定的加速器核心或從流行的運行時&#xff08;包括Qualcomm Neural Processing SDK、TensorFlow Li…

UE5 - 制作《塞爾達傳說》中林克的技能 - 14 - 技能面板

讓我們繼續《塞爾達傳說》中林克技能的制作&#xff01;&#xff01;&#xff01; UE版本&#xff1a;5.6.0 VS版本&#xff1a;2022 本章節的核心目標&#xff1a;技能面板 先讓我們看一下完成后的效果&#xff1a; 第14章效果 本章節項目鏈接&#xff1a; 通過網盤分享的文件…

用Tensorflow進行線性回歸和邏輯回歸(八)

新的TensorFlow概念 創建簡單的機器學習系統需要學習一些新的概念。 優化器 上兩節介紹的元素已經提示了TensorFlow是如何完成機器學習的。你已學習了如何用張量操作來定義損失函數。缺少的是你不知道如何用TensorFlow進行梯度下降。盡管可以用TensorFlow元素直接用 Python定…

基于python代碼的通過爬蟲方式實現TK下載視頻(2025年6月)

Tk的視頻頁面通常需要登錄才能獲取完整數據,但通過構造匿名游客的請求,我們可以繞過登錄限制,提取視頻的元信息(如標題、ID和播放地址)。核心思路如下: 構造匿名Cookie:通過模擬瀏覽器的請求,獲取Tk服務器分配的游客Cookie。解析網頁:利用BeautifulSoup解析HTML,定位…

火山 RTC 引擎14 設置CB

一、火山RTC引擎集成時,設置CB 1、統一設置 void NRTCEngine::SetByteRtcCBS() {UserPublishStreamCallback callback = [this](const std::string& roomId, const std::string& uid, bytertc::MediaStreamType type) {this->OnSigUserPublishStream(roomId, uid, …

BUUCTF在線評測-練習場-WebCTF習題[極客大挑戰 2019]PHP1-flag獲取、解析

解題思路 打開靶場&#xff0c;提示備份 常見的備份后綴名有.bak&#xff0c;.backup&#xff0c;.zip等等 這里肯定是要掃目錄了&#xff0c;不知道是我的問題還是目錄掃描工具的問題還是BUUCTF的問題&#xff0c;每次要掃目錄能掃出一堆東西來&#xff0c;不管你用什么后綴…

對話云蝠智能:大模型如何讓企業呼叫系統從 “成本中心” 變身 “價值樞紐”?

在人工智能重塑企業服務的浪潮中&#xff0c;云蝠智能&#xff08;南京星蝠科技有限公司旗下品牌&#xff09;以深厚的技術積累和行業實踐&#xff0c;逐步成長為國內智能外呼領域的標桿企業。其發展路徑揭示了技術自主創新與場景深度結合的必然性。 一、技術架構&#xff1a;全…

Python-文件管理

1. Open方法 Python 中的文件操作主要通過內置的 open() 函數來完成&#xff0c;該函數用于打開文件&#xff0c;并返回一個文件對象。通過文件對象&#xff0c;可以進行各種文件操作&#xff0c;如讀取、寫入、關閉等。 使用 open() 方法一定要保證關閉文件對象&#xff0c;即…

高速DIC技術之推進劑樣品在霍普金森桿的高速沖擊下的變形監測與不同材質頭盔在不同沖擊位置下的變形測試-VIC-3D HS非接觸全場動態應變測量系統

工程領域對材料與結構在極端動態載荷下復雜變形行為的測量有強烈的需求&#xff0c;且這種測量必須是精確、全域、非接觸式的&#xff0c;高速DIC技術應運而生并不斷得到發展。 常見動態應用包括&#xff08;但不限于&#xff09;&#xff1a;碰撞測試、爆炸試驗、沖擊試驗、跌…

微算法科技融合Grover算法與統一哈希函數的混合經典-量子算法技術,可在多領域高效提升文本處理效率

隨著數據規模的不斷擴大&#xff0c;尤其是在大數據和人工智能驅動的應用中&#xff0c;這些經典算法的線性復雜度逐漸成為瓶頸。面對數十億級別的文本數據&#xff0c;線性時間的算法仍然難以滿足實時性的要求。此外&#xff0c;經典算法在處理無序或隨機文本時&#xff0c;性…