склонный - получают python-xxx установки по сравнению с установкой зернышка

Я все еще пытаюсь понять эту проблему, относительно которой я имею и считал тонну сообщений sudo apt-get install python-XXX по сравнению с pip install, и я понимаю, jist его (склонный - добираются, пакет repo, управляемый совершенно другой группой людей для побеждения, автоматические обновления наряду со всем остальным, когда существует доступное обновление, это является двоичным и т.д.). Однако существует несколько конкретных вещей, которые я не понимаю и не смог найти ответы на:

  1. Если я, по любой причине, сначала устанавливаю пакет, например, numpy, с sudo apt-get install numpy, и затем я позже pip install numpy. Что происходит? numpy установлен снова в другом месте с другой версией (например, в .local/lib), поэтому теперь у меня есть две независимых версии? Какой используется, когда я импортирую? (если я понял правильно, что это является отдельным и склонным - добираются, в масштабе всей системы, но я видел конфликтующие ответы на этот вопрос, например, здесь),

  2. Я заметил, что много пакетов на Кв. - добирается, довольно стар сравненный с зернышком. например, во время записи ipython 2.3.0 по сравнению с 4.0.3, numpy 1.10.2 по сравнению с 1.10.4, spyder 2.3.5 по сравнению с 2.3.8. Есть ли любое преимущество для сначала sudo apt-get install сопровождаемый a pip install? или это просто глупо?

  3. Я заметил, что мое зернышко было 1.5.6 - это - ток, последний, если Вы делаете sudo apt-get install python-pip. тогда как на зернышке это 8.0.2! Я полагаю, что это вызывало меня проблемы, потому что с той старой версией можно установить тот же пакет много раз, и это не предупреждает. И так или иначе это не переписывает старый. Я понял это, потому что я могу продолжать удалять тот же пакет (например, numpy), и это все еще всегда там, когда я делаю pip show numpy. И странно, всегда показывая ту же папку (.local/), но с различными версиями :S Таким образом, у меня есть два вопроса, связанные с этим:

    a. что лучший способ состоит в том, чтобы установить зернышко? Я в настоящее время склоняюсь к sudo apt-get install python-pip, pip install pip, sudo apt-get purge python-pip. Это мудро? Это кажется немного смешным мне.

    b. теперь, когда я знаю, что много моих пакетов испорчено с дублирующимися установками, вероятно, потому что некоторые были установлены с Кв. - добираются и затем позже многократно с зернышком 1.5.6, что лучший способ состоит в том, чтобы проверить на дубликаты и очистить его? Я предполагаю, что не безопасно использовать сценарий для побеждения, удаляют все и переустанавливают?

P.S. Я не был уверен, должен ли я отправить это как новый вопрос или как ответ на мою исходную проблему. Так как этот вопрос является намного более кратким и общим, я чувствовал, что это будет лучше отдельный. Извинения, если я ошибался.

8
задан 13 April 2017 в 05:24

1 ответ

Для архивов после большого метода проб и ошибок это - то, что я нашел (ретроспективно, некоторые биты имеют смысл, довольно сбивающие с толку другие).

  • Если Вы sudo apt-get install python-xyz, пакет появится в pip list. Конечно, можно импортировать его в Python, но это не появляется в зернышке get_installed_distributions (). (Очевидно, противоположное не верно. т.е. если Вы делаете pip install xyz это не появится в Вашем способном/синаптическом),

  • После sudo apt-get install python-xyz если Вы делаете pip install xyz то, что происходит, зависит от версии зернышка, которое Вы имеете.

СТАРЫЙ v1.5.6 (текущая версия, поставлющаяся на Ubuntu PPA):

  • Эта версия зернышка (1.5.6) просто установит новую копию xyz в другом месте. Вы заканчиваете с несколькими копиями, и это вызывает огромную путаницу. например:

    • numpy из Кв. - добираются, 1.8.2 в/usr/local/lib/python2.7/dist-packages
    • numpy от зернышка 1.10.4 в ~/.local/lib/python2.7/site-packages
  • Если я делаю pip install numpy все снова и снова это загружает и устанавливает его снова. Таким образом, Вы могли закончить со многими различными версиями, к которым Вы не можете действительно получить доступ. Я могу сделать pip install numpy 5x времена, и затем я могу сделать pip uninstall numpy 5x времена! Очевидно, можно обратить внимание, чтобы не сделать это, но иногда сценарии установки другого программного обеспечения немного небрежны и могут испортить вещи. Невероятный, что Ubuntu официально поставляет эту версию зернышка.

НОВЫЙ v8.0.2 (текущая версия на самом зернышке):

  • более новые версии зернышка (например, 8.0.2, который находится на зернышке) откажутся устанавливать то же требование высказывания пакета, уже встречен. Таким образом, Вы не можете установить новую версию. Это - хорошее поведение (больше при получении этой версии зернышка позже).

  • В этом случае можно только обновить, т.е. установить с флагом-U.

  • Однако, когда Вы пытаетесь pip install -U xyz на пакете, установленном с sudo Кв. - добираются, Вы получите ошибку полномочий, потому что Кв. - добирается, был установлен в/usr/, и Вы должны базироваться доступ для записи там.

  • Так AFAIK у Вас нет выбора, кроме как к sudo pip install -U xyz смочь обновить его. В этом случае зернышко устанавливает последний пакет в то же место, как sudo склонный - добираются, записал это. например, в моем случае/usr/local/lib/python2.7/dist-packages. Это хорошо.

  • Также стоит указать, что пакеты на Кв. являются часто вполне более старыми, чем пакеты на зернышке (например, numpy v1.8.2 по сравнению с 1.10.4, scipy 0.14.1 по сравнению с 0.17.0, ipython 2.3 по сравнению с 4.0.3, spyder 2.3.5 по сравнению с 2.3.8)

Таким образом, мои текущие мысли должны получить большие вещи с sudo apt-get, например. sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-нос spyder

и затем обновите их (или по крайней мере некоторые из них) с sudo pip install -U.

NB кажется довольно важным получить новое зернышко от зернышка (очень meta)

sudo apt-get install python-pip
sudo pip install -U pip

P.S. Я знаю о virtualenv, но у меня нет потребности в нем прямо сейчас. Мне нужна только одна среда разработки.

И вот немного сценария для дампа списка пакетов, версии и пути (но только работает над установленными модулями зернышка, не модулями из Кв. - добираются),

import pip
pp = pip.get_installed_distributions()
for p in sorted([p.location+"\t"+p.project_name+" ("+p.version+")" for p in pp]):
    print p
8
ответ дан 23 November 2019 в 05:43

Другие вопросы по тегам:

Похожие вопросы: