如何使用git安装pip不仅仅是克隆存储库?

时间:2010-09-11 03:28:58

标签: python django pip

我是Django的初学者,我在使用pip安装django-basic-apps时遇到了麻烦。

如果我这样做......

$ cat requirements.txt 
git+git://github.com/nathanborror/django-basic-apps.git

$ pip install -r requirements.txt

我最终得到的lib/python2.6/site-packages/basic/blog没有模板目录。

如果我这样做......

git clone http://github.com/nathanborror/django-basic-apps.git

我最终获得了basic/blog的副本,该副本有一个模板目录。

我怀疑有关django-basic-apps或pip的内容使其无法通过pip进行安装。我想也许阅读django-basic-apps的{​​{1}}会引导我找到答案,但我看不到它。

(我应该补充一点,如果我在不使用pip的情况下安装,我可以让setup.py正常工作。)

1 个答案:

答案 0 :(得分:25)

当您使用“pip”安装某些内容时,程序包的setup.py用于确定要安装的软件包。如果我正确地阅读它,这个项目的setup.py说“只需在basic目录中安装这些Python包” - setup.py完全没有提到任何非Python文件它希望包含在安装中。

这可能是开发人员的一部分,因为Django软件包不包含模板是一种传统 - 众所周知,即使是内置的django.contrib.auth基本没有任何模板的东西也会让你感到高兴每次都从头开始构建它的小形式! (或者,从网上其他地方的例子中剪切和粘贴。)

但是如果您自己希望使用此Python发行版安装模板,无论作者如何设置,那么只需在setup.py中列出模板!首先,将这样的内容添加到setup.py文件中:

template_patterns = [
    'templates/*.html',
    'templates/*/*.html',
    'templates/*/*/*.html',
    ]

然后,将最后一个变量添加到setup()调用中,使其结束如下:

...
packages=packages,
package_data=dict( (package_name, template_patterns)
                   for package_name in packages ))

这向setup()函数声明每个包都应该附带通过在每个包的templates目录下搜索HTML文件而找到的数据文件。

尝试一下,让我知道这是否适用于您的机器!