要在 macOS 上以可编辑模式安装本地 Python 项目,请打开终端,进入项目目录,创建并激活虚拟环境,然后运行 python -m pip install -e .。这会将 Python 导入链接到您的工作源码树,因此对 Python 文件的修改无需重新安装即可在新的解释器会话中生效。该项目仍需要打包元数据,具体的编辑行为取决于其构建后端。
可编辑安装的作用
常规安装会将项目作为已安装的包放入选定的 Python 环境中。而可编辑安装则将开发目录中的源代码直接置于 Python 的导入路径上。当您在本地修改该项目时,这种方式非常有用;但这并不意味着每个项目文件或非 Python 资源都会自动以相同的方式处理。pip 本地项目安装指南
可编辑模式也不会使依赖项的更改自动消失。除非传入 --no-deps,否则 pip 会按常规方式安装项目声明的依赖项。对 Python 源代码的修改通常在下次运行时即可生效,但对项目元数据、生成的命令行脚本或编译代码的修改可能需要重新安装或重新构建。Python 打包用户指南:打包和分发项目
在 macOS 上准备虚拟环境
在终端中,切换到项目的根目录,即包含 pyproject.toml 或受支持的旧版 setup.py 的目录。下面的 cd 命令假定该文件夹位于您的主目录下;如果路径包含空格,请用引号括起来。
cd "$HOME/path/to/my-project"
python3 --version
python3 -m venv .venv
source .venv/bin/activate
python -m pip --version
虚拟环境可以使该项目的已安装包与其他 Python 环境隔离开来。激活后,python 将指向该环境的解释器,因此使用 python -m pip 可以将 pip 与该解释器绑定。Python 文档将 venv 描述为用于创建隔离环境的工具,并记录了 POSIX shell(包括当前 macOS 终端设置中默认使用的 shell)的激活命令。Python 文档:venv
如果找不到 python3,请先安装或定位 Python 3 解释器;macOS 并不保证在该命令下提供可直接用于开发环境的 Python。如果项目指定了支持的 Python 版本,请使用该版本来创建 .venv。如果项目环境即可满足需求,请避免将包安装到系统管理的 Python 中。
以可编辑模式安装项目
在环境处于激活状态且终端仍位于项目根目录时,运行:
python -m pip install -e .
这里的 -e 表示可编辑(editable),. 表示当前目录。pip 要求本地项目目录必须包含 pyproject.toml 或 setup.py。现代项目通常会在 pyproject.toml 中声明构建后端;pip 会请求该后端执行可编辑安装。后端必须支持可编辑安装接口,此操作才能按预期进行。pip install 参考、pip 构建系统接口
要从其他目录安装,请提供其路径以代替 .,例如 python -m pip install -e "$HOME/path/to/my-project"。为路径加引号可以防止空格和 shell 元字符带来的问题。该安装仅适用于与您使用的 python 命令相关联的 Python 环境。
确认环境并诊断错误
检查 pip 的已安装项目视图,以确认它列出了该包及其可编辑项目路径:
python -m pip list
然后在激活的环境中启动 Python,并尝试使用其文档中说明的导入名称导入该包。导入名称可能与项目的分发名称不同,因此请查阅项目的 README 或包目录,而不是盲目猜测。如果仅在某个文件夹下导入成功,请检查安装是否指向了预期的项目根目录,以及该包是否已配置为可被其后端发现。
如果 pip 提示该目录不可安装,请确认您是否位于正确的根目录中,且该目录包含 pyproject.toml 或 setup.py。如果构建后端拒绝可编辑模式,请根据其文档更新或配置项目的后端;并非所有较旧或自定义的后端都支持可编辑安装。对于现代的 pyproject.toml 项目,pip 会使用后端的 PEP 660 可编辑钩子。pip 构建系统接口
如果项目更改添加了依赖项、入口点或修改了元数据,请重新运行 python -m pip install -e .。对于编译扩展,还需要运行项目中记录的构建步骤。pip 指出,可编辑安装和常规安装的表现可能有所不同,因此可编辑安装仅用于本地开发;它不能替代在分发包之前验证常规安装路径。pip 本地项目安装指南
来源
本地项目安装 — pip
打包和分发项目 — Python Packaging Authority
pip install — pip
构建系统接口 — pip
venv — 虚拟环境的创建 — Python Software Foundation