?

Log in

No account? Create an account
 
 
22 Декабрь 2017 @ 19:51
Почему свежее django не ставится??  
Debian 9.3:
# pip install django
Collecting django
  Downloading Django-2.0.tar.gz (8.0MB)
    100% |████████████████████████████████| 8.0MB 144kB/s 
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "", line 1, in 
      File "/tmp/pip-build-Jhcxvj/django/setup.py", line 32, in 
        version = __import__('django').get_version()
      File "django/__init__.py", line 1, in 
        from django.utils.version import get_version
      File "django/utils/version.py", line 61, in 
        @functools.lru_cache()
    AttributeError: 'module' object has no attribute 'lru_cache'
    
    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-Jhcxvj/django/

Если явно указать предыдущую версию, то она нормально ставится:
#pip install django==1.11
 
 
 
Probably Built In The Fifties: blooduznick on Декабрь, 23, 2017 00:37 (UTC)
Django с версии 2.0 не поддерживает второй питон. Подозреваю, что как раз дело в этом
You  never  can  tell  with beesdil on Декабрь, 23, 2017 09:41 (UTC)
А, вот оно чё..
Хотя в свежем дебиане по умолчанию оба питона есть - 2.7.13 и 3.5.3, но третий надо явно указывать как python3, а просто python - второй.

Ну а чего ж pip, который сам под вторым питоном работает, пытается поставить пакет, который под него не подходит?
Probably Built In The Fifties: blooduznick on Декабрь, 23, 2017 10:10 (UTC)
Потому что не умеет. Надо через pip3 ставить :)
You  never  can  tell  with beesdil on Декабрь, 23, 2017 12:51 (UTC)
Нету такого, apt-cache search pip3 ничего не находит. Видимо, для этого надо поменять python с python2 на python3, и переустановить pip под него.

Но мне это толком не нужно, я работаю со вторым питоном. А вот почему если pip'у не указать явно версию пакета, то он пытается поставить версию, которая под его собственный питон не подходит - непонятно.

Или в pypi эта информация не хранится? Хотя зависимости пакетов по версиям там есть, а версий самого питона нет?
Probably Built In The Fifties: blooduznick on Декабрь, 23, 2017 15:29 (UTC)
У тебя в системе уже установленного pip3 нет? Или какой-нибудь python3-pip доставить.

А вообще в pipy это не хранится насколько я помню.
Ты попросил пакет без версии, он попытался дать тебе последний.
You  never  can  tell  with beesdil on Декабрь, 23, 2017 18:55 (UTC)
Я ж говорю - в моём дебиане готового пакета pip3 нету, ну и фиг с ним, он мне не нужен.

Да, я попросил пакет без версии, но зачем же пытаться ставить эту последнюю версию, которая явно не подходит под используемый питон.

Кстати, когда я указал ==1.11, то поставилась версия 1.11.0, а не последняя 1.11.8. Вот когда явно указал ==1.11.8, тогда она уже поставилась.
Probably Built In The Fiftiesuznick on Декабрь, 24, 2017 09:05 (UTC)
> Кстати, когда я указал ==1.11, то поставилась версия 1.11.0, а не последняя 1.11.8. Вот когда явно указал ==1.11.8, тогда она уже
> поставилась.

== это строгое соответствие.
Чтобы попросить последнюю в рамках мажорной версии нужно указывать Django~=1.11: https://pip.pypa.io/en/stable/reference/pip_install/#example-requirements-file
You  never  can  tell  with beesdil on Декабрь, 24, 2017 10:34 (UTC)
О, спасибо! Я таких тонкостей не знал. Хотя формально 1.11 и 1.11.0 - это всё же немножко разные номера.

А у них там в примере написано
~= 1.1        # Compatible release. Same as >= 1.1, == 1.*

но на самом деле, они несколько разные:
pip install 'django>=1.11' ставит 2.0, что в некотором смысле логично, 2.0 и вправду больше 1.11, но она ж уже не compatible..
а вот install 'django==1.11.*' и даже просто 'django==1.*' - натурально ставит последнюю версию 1.11.8.