在本地用pip克隆Git存储库并安装包的步骤

提要

以下是有关如何使用pip命令从本地克隆的Git仓库而不是从远程的PyPI(Python Package Index)安装包的方法的备忘录。

我假设您考虑的是下面的环境,但是我认为在Linux环境下也可以进行相同的操作。

    • MacOSX (Version 10.9.5)

 

    Python 3.4.2

目的

在使用Python编写一定规模的应用程序时,我认为可能会有想要对通过pip安装的包进行更改的情况。然而,直接修改代码会导致难以恢复更改,也难以将更改反馈给上游。

如果您可以将克隆到本地的 Git(或者Mercurial)存储库视为Python软件包并通过pip进行安装,那么您就可以解决这个问题。

步骤

我們將 Python 套件克隆到適當的路徑中。在這裡,我們將 Django 克隆到 /tmp 目錄下。

cd /tmp && git clone git@github.com:django/django.git

请在 $HOME 下创建一个适当的虚拟环境。如果您正在使用 Python 2.x,请将 pyvenv 替换为 virtualenv 以进行阅读。

pyvenv ~/dummy-project
source ~/dummy-project/bin/activate

我們將在先前創建的 Django 分支上使用 pip 進行安裝。

pip install -e /tmp/django

现在,让我们来确认一下安装在这里的 Django 的 django-admin.py 的情况。

cat ~/dummy-project/bin/django-admin.py
#!/Users/aeas44/dummy-project/bin/python3.4
# EASY-INSTALL-DEV-SCRIPT: 'Django==1.9.dev20150318000307','django-admin.py'
__requires__ = 'Django==1.9.dev20150318000307'
import sys
from pkg_resources import require
require('Django==1.9.dev20150318000307')
del require
__file__ = '/private/tmp/django/django/bin/django-admin.py'
if sys.version_info < (3, 0):
    execfile(__file__)
else:
    exec(compile(open(__file__).read(), __file__, 'exec'))

值得关注的是 __file__ = ‘/private/tmp/django/django/bin/django-admin.py’ 这一行。在 MacOSX 中,/tmp 被符号链接连接到 /private/tmp,因此,这意味着先前在 /tmp 克隆的 Django 现在是实际存在的。

只需要一个选项,请用中文将以下内容进行改写:
通过在/tmp上克隆的存储库进行编辑,可以从而无需重新安装即可将更改反映在项目中。如有需要,还可以提交更改并将其还原到上游。

bannerAds