VCS 支持¶
pip 支持从各种版本控制系统 (VCS) 安装。此支持需要一个可用的工作可执行文件(用于正在使用的版本控制系统)。它通过 URL 前缀使用
Git --
git+
Mercurial --
hg+
Subversion --
svn+
Bazaar --
bzr+
支持的 VCS¶
Git¶
支持的方案是 git+file
、git+https
、git+ssh
、git+http
、git+git
和 git
。以下是一些支持的形式
MyProject @ git+ssh://[email protected]/MyProject
MyProject @ git+file:///home/user/projects/MyProject
MyProject @ git+https://git.example.com/MyProject
警告
不建议使用 git
、git+git
和 git+http
方案。前两个使用 Git 协议,该协议缺乏身份验证,而 HTTP 由于缺乏基于 TLS 的加密而是不安全的。
也可以指定一个“git ref”,例如分支名称、提交哈希或标签名称
MyProject @ git+https://git.example.com/MyProject.git@master
MyProject @ git+https://git.example.com/[email protected]
MyProject @ git+https://git.example.com/MyProject.git@da39a3ee5e6b4b0d3255bfef95601890afd80709
MyProject @ git+https://git.example.com/MyProject.git@refs/pull/123/head
在传递提交哈希时,指定完整的哈希比部分哈希更可取,因为完整的哈希允许 pip 更有效地运行(例如,通过减少网络调用次数)。
Mercurial¶
支持的方案是 hg+file
、hg+http
、hg+https
、hg+ssh
和 hg+static-http
。以下是一些支持的形式
MyProject @ hg+http://hg.myproject.org/MyProject
MyProject @ hg+https://hg.myproject.org/MyProject
MyProject @ hg+ssh://hg.myproject.org/MyProject
MyProject @ hg+file:///home/user/projects/MyProject
也可以指定修订号、修订哈希、标签名称或本地分支名称
MyProject @ hg+http://hg.example.com/MyProject@da39a3ee5e6b
MyProject @ hg+http://hg.example.com/MyProject@2019
MyProject @ hg+http://hg.example.com/[email protected]
MyProject @ hg+http://hg.example.com/MyProject@special_feature
Subversion¶
支持的方案是 svn
、svn+svn
、svn+http
、svn+https
和 svn+ssh
。以下是一些支持的形式
MyProject @ svn+https://svn.example.com/MyProject
MyProject @ svn+ssh://svn.example.com/MyProject
MyProject @ svn+ssh://[email protected]/MyProject
您也可以为 SVN URL 提供特定修订版,如下所示
-e svn+http://svn.example.com/svn/MyProject/trunk@2019#egg=MyProject
-e svn+http://svn.example.com/svn/MyProject/trunk@{20080101}#egg=MyProject
请注意,您需要使用 可编辑 VCS 安装 才能使用来自 Subversion 的特定修订版。
Bazaar¶
支持的方案是 bzr+http
、bzr+https
、bzr+ssh
、bzr+sftp
、bzr+ftp
和 bzr+lp
。以下是一些支持的形式
MyProject @ bzr+http://bzr.example.com/MyProject/trunk
MyProject @ bzr+sftp://[email protected]/MyProject/trunk
MyProject @ bzr+ssh://[email protected]/MyProject/trunk
MyProject @ bzr+ftp://[email protected]/MyProject/trunk
MyProject @ bzr+lp:MyProject
标签或修订版可以像这样安装
MyProject @ bzr+https://bzr.example.com/MyProject/trunk@2019
MyProject @ bzr+http://bzr.example.com/MyProject/[email protected]
可编辑 VCS 安装¶
VCS 项目可以以 可编辑模式(使用 --editable 选项)安装,也可以不安装。
默认克隆位置(对于可编辑安装)是
<venv path>/src/SomeProject
在虚拟环境中<cwd>/src/SomeProject
对于全局 Python 安装
可以使用 --src 选项修改此位置。
对于不可编辑的安装,该项目在临时目录中本地构建,然后正常安装。
请注意,如果已经安装了包的满意版本,VCS 源代码不会在没有 --upgrade
标志的情况下覆盖它。此外,pip 会查看包版本和目标修订版以确定对 VCS 需求采取什么操作(而不是提交本身)。
URL 片段¶
pip 会查看 VCS URL 的 subdirectory
片段,以指定 Python 包的路径,当它不在 VCS 目录的根目录中时。例如:pkg_dir
。
pip 还会查看 egg
片段,该片段指定“项目名称”。实际上,egg
片段仅在帮助 pip 确定可编辑模式下的 VCS 克隆位置时才需要。在所有其他情况下,egg
片段是不必要的,并且不建议使用它。
egg
片段 **应该** 是一个裸露的 项目名称。其他任何东西都不保证能工作。
示例
如果您的存储库布局是
pkg_dir
├── setup.py # setup.py for package "pkg"
└── some_module.py
other_dir
└── some_file
some_other_file
然后,要从这个存储库安装,语法应该是
$ python -m pip install "pkg @ vcs+protocol://repo_url/#subdirectory=pkg_dir"
$ python -m pip install "pkg @ vcs+protocol://repo_url/#subdirectory=pkg_dir"
C:> py -m pip install "pkg @ vcs+protocol://repo_url/#subdirectory=pkg_dir"
或者
$ python -m pip install -e "vcs+protocol://repo_url/#egg=pkg&subdirectory=pkg_dir"
$ python -m pip install -e "vcs+protocol://repo_url/#egg=pkg&subdirectory=pkg_dir"
C:> py -m pip install -e "vcs+protocol://repo_url/#egg=pkg&subdirectory=pkg_dir"