pip install -e . 用于以“可编辑模式”安装本地Python包,利用setup.py (或 pyproject.toml) 文件来管理依赖关系、版本号。这在开发过程中非常有用,它允许你修改包的代码,并且这些修改会立即反映到你的项目中,而无需重新安装包。
可编辑模式: 这是 -e 选项的关键作用。 它会在你的项目中创建一个指向 mib 包的链接,而不是将包复制到你的项目目录中。 这意味着你对 本地Python包代码的任何修改都会立即生效,无需重新安装包。 这在开发过程中非常方便,可以节省大量时间.
进一步解释
通常情况下,使用 pip install <package_name> 安装一个包时,pip会将包复制到你的Python环境的 site-packages 目录中。 这意味着你的项目使用的是 site-packages 目录中的包的副本,而不是原始的包文件。 如果你修改了原始的包文件,这些修改不会反映到你的项目中,除非你重新安装包。
而在可编辑模式下,pip install -e <path/to/package> 会做一些不同的事情:
-
创建链接: 它不会复制包文件,而是在你的Python环境的 site-packages 目录中创建一个指向原始包位置的链接(类似于快捷方式)。
-
修改 .pth 文件: 除了创建链接之外,pip还会在 site-packages 目录中创建一个 .pth 文件(例如 my_package.pth)。 这个文件包含了原始包的路径。 Python解释器在导入包时会读取 .pth 文件,并将其中指定的路径添加到模块搜索路径中。
通过这种方式,你的项目实际上是直接使用原始的包文件,而不是 site-packages 中的副本。 因此,当你修改原始包文件时,这些修改会立即生效,而无需重新安装包。
举例说明:
假设你的项目结构如下:
my_project/
├── my_package/
│ ├── __init__.py
│ └── my_module.py
└── main.py
你想在 main.py 中使用 my_package。
普通安装:
pip install . # 在 my_project 目录下执行
这会将 my_package 复制到 site-packages 目录。 如果你修改了 my_package/my_module.py,需要重新执行 pip install . 才能使修改生效。
可编辑模式安装:
pip install -e . # 在 my_project 目录下执行
这会在 site-packages 中创建一个指向 my_project/my_package 的链接,并在 .pth 文件中添加 my_project/my_package 的路径。 现在,如果你修改了 my_package/my_module.py,这些修改会立即生效,无需重新安装。
总结:
可编辑模式允许你直接修改包的源代码,并立即在你的项目中看到这些修改的效果,这在开发过程中非常方便,可以节省大量时间。 它通过创建链接和修改 .pth 文件来实现这一点,而不是将包复制到 site-packages 目录中。