本地项目安装¶
在您的计算机上 [1] 有一个您希望安装的项目文件夹/目录,这种情况非常常见。
使用 pip,根据您的用例,有两种方法可以做到这一点
常规安装
可编辑安装
常规安装¶
您可以通过将项目路径指定给 pip 来安装本地项目
$ python -m pip install path/to/SomeProject
$ python -m pip install path/to/SomeProject
C:> py -m pip install path/to/SomeProject
这将以与实际安装方式类似的方式,将项目安装到 pip 关联的 Python 中。
这应该是 CI 系统和部署中使用的,因为它最接近于您构建分发并从分发中安装时安装包的方式(因为这正是它所做的)。
可编辑安装¶
您可以以“可编辑”模式安装本地项目
$ python -m pip install -e path/to/SomeProject
$ python -m pip install -e path/to/SomeProject
C:> py -m pip install -e path/to/SomeProject
可编辑安装允许您在不复制任何文件的情况下安装项目。相反,开发目录中的文件将被添加到 Python 的导入路径中。这种方法非常适合开发,也被称为“开发安装”。
使用可编辑安装,您只需要在更改项目元数据(例如:版本、需要生成的脚本等)时重新安装。如果您需要为项目中的非 Python 代码执行编译(例如:C 扩展),您仍然需要运行构建命令。
警告
常规安装与可编辑安装之间可能会存在行为差异。这些差异取决于构建后端,您应该查看构建后端文档以了解详细信息。如果您将项目分发为“分发包”,用户将看到常规安装的行为 - 因此,确保常规安装正常运行非常重要。
注意
这在功能上与 setuptools 的开发模式 相同,这正是用于基于 setuptools 的项目的机制。
直接使用 setup.py develop
有两个优势
这也能与非 setuptools 构建后端一起使用。
当使用 pip 时,“.egg-info” 目录是相对于项目路径创建的。这通常比 setuptools 更好, setuptools 将它转储到当前工作目录中。
构建工件¶
在版本 21.3 中更改: 默认情况下,不再将要安装的项目复制到临时目录中,然后调用构建系统。提供了一个 --use-deprecated=out-of-tree-build
选项作为临时回退,以帮助用户迁移。
在版本 22.1 中更改: 已删除 --use-deprecated=out-of-tree-build
选项。
当提供一个位于本地目录中的项目时,pip 将“就地”调用构建系统。此行为有几个后果
对于某些类型的项目和具有缓慢 I/O 的系统(例如:通过网络附加存储或过于激进的反病毒软件),本地项目构建现在将明显更快。
某些构建后端(例如:
setuptools
)会在项目目录中散布次要构建工件(例如:.egg-info
目录)。某些构建后端(例如:
setuptools
)可能无法再执行并行构建,因为它们之前依赖于 pip 为每个构建在单独的目录中调用它们这一事实。