詳解 pip install -e .
命令
pip install -e .
是 Python 開發中一個非常有用的命令,用于以"可編輯"或"開發"模式安裝當前目錄中的 Python 包。
命令分解
pip
: Python 的包管理工具install
: pip 的子命令,用于安裝包-e
: 是--editable
的縮寫,表示以可編輯模式安裝.
: 表示當前目錄,通常包含一個 Python 項目/包
工作原理
當執行 pip install -e .
時:
- pip 會查找當前目錄下的
setup.py
或pyproject.toml
文件 - 它會安裝該包,但不是將包文件復制到 Python 的 site-packages 目錄
- 而是在 site-packages 中創建一個鏈接(稱為
.pth
文件)指向你的項目目錄
setup.py
或 pyproject.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
執行流程:
- 在項目根目錄執行
pip install -e .
- 可在任何 Python 環境中
import my_package
- 修改
module.py
后,更改會立即生效
技術細節
🔧 在 site-packages 中會創建:
.egg-link
文件(指向項目目錄)easy-install.pth
文件(包含項目路徑)
📦 包的元數據會被正常安裝到 site-packages
與常規安裝的區別
特性 | pip install . | pip install -e . |
---|---|---|
文件位置 | 復制到 site-packages | 保留在原位置 |
修改后是否需要重裝 | 需要 | 不需要 |
適合階段 | 生產環境 | 開發環境 |
注意事項
?? 項目必須包含有效的 setup.py
或 pyproject.toml
?? 依賴項會被正常安裝(與常規安裝相同)
?? Windows 可能創建 .pth
文件而非符號鏈接
?? 卸載使用 pip uninstall package_name
總結
pip install -e .
是 Python 開發的高效工具,特別適合:
🔧 開發自有庫/應用
? 提升開發效率
🔄 避免重復安裝