pip не працює на hombrew python 2.7 install


15

Я встановив python за допомогою homebrew, і я не можу викликати pip з bash. Я спробував внести зміни .bash_profile до включення / usr / local / bin / python та / usr local / share / python безрезультатно.

Коли я використовую команду bash:

find / -name 'pip'

Єдині результати, які я отримую:

/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip
/Users/Ivan/Library/Caches/pip
/Users/Ivan/Library/Logs/pip
/usr/local/Cellar/python/2.7.9/libexec/pip
/usr/local/Cellar/python/2.7.9/libexec/pip/pip
/usr/local/lib/python2.7/site-packages/pip

Жоден з яких не виконується.

Я насправді не знаю, куди мені вказати $ PATH, оскільки я не можу знайти файл, який виконується. Коли я відкриваю

/usr/local/lib/python2.7/site-packages/pip

або

/usr/local/Cellar/python/2.7.9/libexec/pip/pip

Я знаходжу такі файли:

__init__.py         commands            operations
__init__.pyc        compat              pep425tags.py
__main__.py         download.py         pep425tags.pyc
__main__.pyc        download.pyc        req
_vendor             exceptions.py       status_codes.py
basecommand.py      exceptions.pyc      status_codes.pyc
basecommand.pyc     index.py            utils
baseparser.py       index.pyc           vcs
baseparser.pyc      locations.py        wheel.py
cmdoptions.py       locations.pyc       wheel.pyc
cmdoptions.pyc      models

Жоден з яких не виконується.

Буду вдячний за допомогу будь-кого з більшим досвідом, ніж я.

Редагувати: я спробував кроки, запропоновані Марко:

Ось результати кроків:

  1. echo $ PATH відображає кілька каталогів: / usr / local / bin: / usr / local / mysql / bin: / usr / bin: / bin: / usr / sbin: / sbin: / usr / local / bin: / usr / texbin: / opt / X11 / bin: / usr / local / mysql / bin

  2. який -a python повертає: / usr / local / bin / python / usr / local / bin / python

нічого не повертається, за що -a pip

  1. який python повертає: / usr / local / bin / python

нічого не повертається за який піп

  1. ls -l $ (який python) повертає єдиний каталог: lrwxr-xr-x 1 Іван адміністратор 33 17 травня 08:59 / usr / local / bin / python -> ../Cellar/python/2.7.9/bin/ пітон

ls -l $ (який піп) повертає декілька, включаючи файли python, які я показав у своєму початковому дописі

Відповіді:


19

Як правило, homebrewвстановіть formulaв, /usr/local/Cellar/formulaа потім розмістіть посилання на /usr/local/bin/formula.

Щоб скористатися встановленими формулами, переконайтеся, що вони /usr/local/binє у ваших $PATH. Покажіть своє $PATH, ввівши

echo $PATH

Якщо /usr/local/binу вас немає $PATH, покладіть цей рядок у кінці ~/.profileфайлу.

export PATH="/usr/local/bin:$PATH"

Тепер перевірте, що pythonsви знайдете на вашому OSX, ввівши:

which -a python

Там повинен бути один пітон, знайдений у /usr/bin/(Apple python), і той, на /usr/local/bin/якому пітон Homebrew.

which python

покаже, який пітон знайдеться першим у вашому $PATH і буде виконуватися під час виклику python.

Якщо ви хочете знати, де знаходиться виконуваний файл, покажіть його, ввівши його

ls -l $(which python)

Це могло б виглядати приблизно так: lrwxr-xr-x 1 кореневе колесо 68 7 травня 13:22 python -> / usr / local / bin / python

Це також буде працювати pip.

Якщо ви покажете результати цих кроків, ми можемо вам набагато простіше допомогти.

- ОНОВЛЕННЯ -

Ви /usr/local/bin/pythonзв’язалися з /usr/local/Cellar/python/2.7.9/bin/python. -> brew install pythonпрацював.

показати, якщо pipвстановлено, набравши

brew list python | grep pip

Ви повинні побачити

/usr/local/Cellar/python/2.7.9/bin/pip

Якщо ні, перевірте, чи є посилання, з якими не робиться brew install. Я сказав вам щось подібне:

"Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local"

Щоб примусити посилання та перезаписати всі конфліктуючі файли:

brew link --overwrite python

Щоб перелічити всі файли, які буде видалено:

brew link --overwrite --dry-run python

** НЕ стандартний Apple /usr/bin/python**

посилання від /usr/local/Cellar/python/2.7.9/bin/pythonдо/usr/bin/python

ln -s /usr/local/Cellar/python/2.7.9/bin/python /usr/bin/python

Це необхідно для всіх скриптів python, починаючи з #!/usr/bin/python. Особливо easy_installне вдасться, якщо посилання немає.

Тепер ти вмієш бігати

easy_install pip

Сподіваюся, ви прогресуєте


Марко, дякую за вашу відповідь! Будь ласка, дивіться моє первісне запитання щодо результатів кроків - я додав їх у
YoungPadawan

@YoungPadawan схоже, що у вас немає стандарту Apple /usr/bin/python. Це не добре, тому що починається багато сценаріїв Python #!/usr/bin/python. Якщо немає пітона, ви отримуєте повідомлення про помилки, як ваше. Використовуйте brew link --dry-run pythonдля перевірки, що буде змінено у ваших посиланнях під час використання brew link --overwrite python. Ми запустимо ваш піп ;-)
Марко М. фон Хаген

використовувати, brew link --overwrite --dry-run pythonщоб побачити, які файли будуть перезаписані.
Марко М. фон Хаген

1
Я поставив галочку вашій відповіді, оскільки це призвело мене до правильного шляху, але врешті-решт це було питанням дозволу. Після встановлення я отримав Warning: The post-install step did not complete successfully You can try again using brew postinstall python. I tried the заварену команду постінсталяції python`, і це призвело до декількох файлів, до яких я не мав доступу, до яких я порушився. Тепер я можу використовувати pip! Ще раз
дякую

1
У моєму випадку проблема була The post-install step did not complete successfullyчерез error: could not delete '/usr/local/lib/python2.7/site-packages/pip/__init__.py': Permission denied. Видалення цього файлу вручну та brew postinstall pythonповторення його виправлення.
Девід Pursehouse

5

Якщо brew керує вашою установкою python, а pip більше не посилається (тобто ви вводите "який піп" і не отримуєте результатів), спробуйте це з домашнього каталогу:

brew unlink python && brew link python

Не впевнений, чи працює старий метод більше (він не був на моїй машині).

Тепер переконайтеся, що він дійсно вказує на вашу установку 2.7 pip --version(він перелічить основну версію python у вихідному каталозі).


4

Насправді не є відповіддю на початкове запитання, але якщо хтось опиниться тут, оскільки їх встановлений Homebrew python/pipбільше не працює (тобто pythonвказує на системний пітон і pipйого не знайдено), то причиною може бути нещодавня (літо 2017 року) зміна в спосіб Homebrew встановлює і посилається python.

Рішення полягає в тому, щоб додати ~/.bash_profileта / або ~/.zshrc:

export PATH="$(brew --prefix)/opt/python/libexec/bin:$PATH"

Це pythonвкаже на варивову версію пітона, а також дасть вам можливість pip. Дивіться розділ застережень під brew info pythonта https://github.com/Homebrew/homebrew-core/isissue/15746 для отримання додаткової інформації


2

За замовчуванням Homebrew забезпечує піп через: brew install python. Однак у вас на комп'ютері Mac будуть встановлені два пітона, ви можете встановити його за допомогою:

sudo easy_install pip

Щоб перевірити, які файли встановлені у вашому пакеті Python, спробуйте:

$ brew list python
/usr/local/Cellar/python/2.7.9/bin/pip
/usr/local/Cellar/python/2.7.9/bin/pip2
/usr/local/Cellar/python/2.7.9/bin/pip2.7
...

яка повинна складатися pip.

Після встановлення слід символізувати встановлені файли вашої формули:

brew link python

які повинні створювати правильні символічні посилання (наприклад, /usr/local/bin/pipвказівки на ваш Cellar/python/2.?.?/bin/pip)

Якщо у вас є проблема з дозволом, ви можете виправити це:

sudo chgrp -R admin /usr/local /Library/Caches/Homebrew
sudo chmod -R g+w /usr/local /Library/Caches/Homebrew

і переконайтеся, що ваш користувач перебуває в групі адміністратора ( id -Gn $USER).

Після виправлення дозволів не використовувати sudoпри використанні brewкоманди.

Потім знову зв’яжіть його:

brew unlink python && brew link python

Для тестування запуску, від’єднайте та запустіть: brew link -n pythonщоб побачити посилання файлів, які brewб посилалися.

Після успішного посилання переконайтесь, що ваша змінна система PATH має /usr/local, якщо ні, додайте:

export PATH=/usr/local/sbin:/usr/local/bin:$PATH

у ваш ~/.bashrcфайл.

Якщо вам це вдасться, вам pipслід працювати зараз.


Дякуємо за вашу відповідь kenorb! Частина проблеми полягає в тому, що easy_install також не працює для мене. У баші я отримую: -bash: / usr / bin / easy_install: / usr / bin / python: поганий перекладач: Немає такого файлу чи каталогу
YoungPadawan

Це означає, що у вас немає /usr/bin/pythonвстановленого (що зазвичай має бути забезпечено ОС X). Тому будь ласка, спробуйте, як було запропоновано, а саме:, brew install python && brew link pythonа потім додайте /usr/local/binдо свого PATH.
kenorb

Я не думаю, що brew install python && brew link pythonце вводить python /usr/bin. Я бачу це usr/local/bin, але я не бачу симпосилання, щоб піп там. Я також від’єднав і зв'язав python, і нічого не зміниться. Складається враження, що встановлення та посилання варіння не ставить речі там, де слід
YoungPadawan

@YoungPadawan brewнічого не робить /usr/bin, але /usr/local/bin. Спробуйте: brew unlink pythonі запустіть: brew link -n pythonперерахуйте всі файли, які слід пов’язати, і перевірте, чи pipє вони. Якщо так, запустіть знову без -n.
kenorb

Дякую Кенорбу, я знайшов рішення. Зрештою, це була несправна установка через дозволи. Я змінив дозволи на декілька файлів, які заварювались, суперечили і повторно запустив установку, і тепер усе працює добре. Детальніше в коментарі до питання вище. Ще раз дякую за вашу відповідь, мені було дуже корисно в тому, щоб знайти мене до рішення.
YoungPadawan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.