Настройка django-nonrel с помощью pip

Я пытаюсь правильно установить django-nonrel - и воспроизвести процесс.

Я установил django-nonrel, используя pip, следующим образом:

pip install git+https://github.com/django-nonrel/django-nonrel.git
pip install git+https://github.com/django-nonrel/django-dbindexer.git
pip install git+https://github.com/django-nonrel/django-permission-backend-nonrel
pip install hg+https://bitbucket.org/wkornewald/djangoappengine
pip install hg+https://bitbucket.org/wkornewald/djangotoolbox
pip install hg+https://bitbucket.org/twanschik/django-autoload
pip install hg+https://bitbucket.org/twanschik/nonrel-search/src

После установки я получил этот файл req.txt (заморозка пипа > req.txt):

Django==1.3.1
django-autoload==0.01
django-dbindexer==0.3
djangoappengine==1.0
djangotoolbox==0.9.2
nonrel-search==0.1
permission-backend-nonrel==0.1
wsgiref==0.1.2

Но я не могу использовать свой файл req.txt, чтобы получить то же самое. Если я удалю пакет (например, django-autoload) и попытаюсь получить его снова, используя файл требований

(gae-first)bentzy@lama:~/.virtualenvs/gae-first$ pip uninstall django-autoload
Uninstalling django-autoload:
...
Successfully uninstalled django-autoload
(gae-first)bentzy@lama:~/.virtualenvs/gae-first$ pip install -r req.txt 
Requirement already satisfied (use --upgrade to upgrade): Django==1.3.1       in ./lib/python2.7/site-packages (from -r req.txt (line 1))
Downloading/unpacking django-autoload==0.01 (from -r req.txt (line 2))
Could not find any downloads that satisfy the requirement django-autoload==0.01 (from -r req.txt (line 2))
No distributions at all found for django-autoload==0.01 (from -r req.txt (line 2))
Storing complete log in /home/bentzy/.pip/pip.log

Почему этих пакетов нет в репозитории pip?

Есть ли смысл использовать pip для их установки?


person bentzy    schedule 29.01.2013    source источник


Ответы (2)


Проблема в том, что в вашем файле требований недостаточно информации.

Что pip собирается сделать, когда вы запросите его установить django-autoload, например, посмотреть PyPI для этого пакета (и удалить некоторые страницы после обнаружения записи PyPI).

Если вы хотите иметь файл требований, который загружает эти пакеты так же, как вы делали это при установке один за другим, сделайте то же самое: сообщите pip, где найти пакеты.

Создайте файл требований, например:

git+https://github.com/django-nonrel/django-nonrel.git
git+https://github.com/django-nonrel/django-dbindexer.git
git+https://github.com/django-nonrel/django-permission-backend-nonrel
hg+https://bitbucket.org/wkornewald/djangoappengine
hg+https://bitbucket.org/wkornewald/djangotoolbox
hg+https://bitbucket.org/twanschik/django-autoload
hg+https://bitbucket.org/twanschik/nonrel-search/src

Или, если вы хотите установить из определенного тега или фиксации, выполните:

git+https://github.com/django-nonrel/[email protected]#egg=Django

Подробнее о файле требований читайте на http://www.pip-installer.org/en/latest/logic.html#requirements-file-format

person Hugo Tavares    schedule 29.01.2013
comment
Итак, ответ в том, что по какой-то причине ребята из django-nonrel не добавили проекты в PyPI. Тем не менее, я думаю, что стоит использовать pip и вручную редактировать файл требований (с URL-адресами, как вы описали), чтобы упростить воспроизведение среды. - person bentzy; 30.01.2013
comment
Да, может быть, вы должны предупредить их об этом. - person Hugo Tavares; 30.01.2013

на самом деле нет смысла использовать pip, если вы используете GAE, поскольку все используемые вами пакеты должны находиться в вашей фактической папке проекта GAE. Пакеты, установленные в вашей системе или в среде virtualenv, не будут загружены на рабочие серверы GAE.

person dragonx    schedule 29.01.2013
comment
С другой стороны, вы можете просто сделать символическую ссылку из папки вашего проекта на сайт-пакеты и по-прежнему использовать pip... appcfg.py разрешит символические ссылки. Мой вопрос в другом :-) - person bentzy; 29.01.2013