在本地用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上克隆的存储库进行编辑,可以从而无需重新安装即可将更改反映在项目中。如有需要,还可以提交更改并将其还原到上游。