2013-08-22 3 views
3

В OSX 10.7.5 я пытаюсь использовать команду pip3 для установки пакетов на python3. Когда я пытаюсь, я получаю сообщение об ошибке:pip3 говорит «разрешить pkg_resources.DistributionNotFound: pip == 1.3.1»

zak$ pip3 
Traceback (most recent call last): 
    File "/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/setuptools-1.0-py3.3.egg/pkg_resources.py", line 2793, in <module> 
    File "/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/setuptools-1.0-py3.3.egg/pkg_resources.py", line 673, in require 
    File "/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/setuptools-1.0-py3.3.egg/pkg_resources.py", line 580, in resolve 
pkg_resources.VersionConflict: (pip 1.4.1 (/usr/local/lib/python3.3/site-packages), Requirement.parse('pip==1.3.1')) 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "/usr/local/bin/pip3", line 5, in <module> 
    from pkg_resources import load_entry_point 
    File "<frozen importlib._bootstrap>", line 1567, in _find_and_load 
    File "<frozen importlib._bootstrap>", line 1534, in _find_and_load_unlocked 
    File "/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/setuptools-1.0-py3.3.egg/pkg_resources.py", line 2797, in <module> 
    File "/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/setuptools-1.0-py3.3.egg/pkg_resources.py", line 576, in resolve 
pkg_resources.DistributionNotFound: pip==1.3.1 

Похоже setuptools требует старой версии пипа (я установил 1.4.1), но почему? Как я могу это исправить?

+1

Установили ли вы что-нибудь, или это с помощью «пипса» из Homebrew из коробки? Я бы не стал этим удивляться, потому что setuptools 1.0 довольно новый и имеет некоторые отстающие несовместимости, и рецепт Homebrew, возможно, еще не был полностью обновлен ... Но было бы неплохо исключить несовместимые остатки от предыдущих установок (например, , вы распространяли, а затем устанавливали последние setuptools без деинсталляции дистрибутива). – abarnert

+1

Кроме того, у вас есть 'PYTHONPATH'? И если вы 'print (sys.path)' из Python, являются ли какие-либо из этих каталогов, совместно используемых с любой другой установкой Python на вашем компьютере? – abarnert

+1

После некоторого обмана я смог вызвать это, установив Python.org 3.3 (помещая '/ Library/Frameworks/Python.framework/Versions/3.3/bin' в PATH вместо ссылки на'/usr/local/bin'), устанавливая pip 1.3.1 и его минимальные зависимости, а затем устанавливая Homebrew 3.3 с помощью его пипетки 1.4.1. Я закончил с '/ usr/local/bin/pip3', являющимся скриптом 1.3.1 python.org, но указывающим на'/usr/local/bin/python3.3', который является версией Homebrew, которая находит pip 1.4 .1 в '/ usr/local/lib/python3.3/site-packages'. – abarnert

ответ

2

Проблема заключается в том, что у вас есть две разные установки Python 3.3 и общий каталог сайтов-пакетов. * И инструмент, который вы запускаете как pip3, находится из pip 1.3.1, но модули, которые он использует для выполнения своей работы из пункта 1.4.1.

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

Следующие действия должны работать (возможно, с некоторыми командами или с помощью Finder, и дать ему возможность указать, требуется ли аутентификация).

Обратите внимание, что это будет также частично или полностью удалить любые другие сторонние версии Python (например, python.org 2.7.5), которые, как я считаю, для вас не проблема, но могут быть для будущих читателей.

Прежде чем удалять какие-либо вещи, вы можете захотеть составить список всех установленных пакетов. (Я обычно делаю это самым взломанным способом: запустите ipython и дайте ему заполнить заявку на импорт)

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

  • brew uninstall python3
  • rm -rf /Library/Frameworks/Python.framework
  • rm -rf /usr/local/lib/python*
  • rm -rf /usr/local/share/python*
  • Найти где в ~/.bash_profile (или ~/.profile или в другом месте), вы добавляете пути Python к вашему PATH. У вас может быть /usr/local/share/python3 и/или что-то внутри Python.framework или Cellar/python3. Отбросьте все, что найдете.
  • Запустите новую оболочку в Terminal.app.
  • brew doctor, и исправить все, что он жалуется, что кажется потенциально значимым (материал, не относящийся к Homebrew MacFUSE, отлично подходит для использования, предложение brew prune, вероятно, стоит того делать, но не имеет значения здесь), и запустите его снова убедиться.
  • brew install python3.
  • pip3, чтобы переустановить все удаленные вами пакеты, которые вам нужны снова.

* Деталь:

  • Homebrew Python 3.3 установлена ​​в /usr/local/Cellar/python3/3.3.2/, с различными вещами слинкованы в /usr/local/bin и его брат и сестра, и, возможно, в /Library где-то.
  • Еще один Python 3.3, возможно, из установщика python.org, установлен в /Library/Frameworks/Python.framework/Versions/3.3/, с различными вещами, возможно, символическими ссылками на /usr/local/bin или иначе добавленными в ваш PATH.
  • Оба, возможно, включают /usr/local/lib/python3.3 в свой поиск по сайту.
0

После запуска

pip install --upgrade setuptools

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

Смежные вопросы