Подтвердить что ты не робот

Pip Установить не устанавливать в правильный каталог?

Я не могу правильно использовать sudo pip, чтобы он устанавливался в следующий каталог:

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/

чтобы затем я мог импортировать модуль с помощью python

Я запустил

sudo pip install scikit-learn --upgrade

Результат

Requirement already up-to-date: scikit-learn in /usr/local/lib/python2.7/site-packages
Cleaning up...

Однако он не находится в правильном каталоге

Как получить sudo pip install для установки в правильный каталог?

Кроме того, я пробовал

sudo pip install Scrappy

Получаю следующее сообщение

new-host-2:site-packages Chris$ sudo pip install Scrapy
Password:
Requirement already satisfied (use --upgrade to upgrade): Scrapy in /usr/local/lib/python2.7/site-packages
Requirement already satisfied (use --upgrade to upgrade): Twisted>=10.0.0 in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): w3lib>=1.8.0 in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): queuelib in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): lxml in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): pyOpenSSL in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): cssselect>=0.9 in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): six>=1.5.2 in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): zope.interface>=3.6.0 in /usr/local/lib/python2.7/site-packages (from Twisted>=10.0.0->Scrapy)
Requirement already satisfied (use --upgrade to upgrade): cryptography>=0.2.1 in /usr/local/lib/python2.7/site-packages (from pyOpenSSL->Scrapy)
Requirement already satisfied (use --upgrade to upgrade): setuptools in /usr/local/lib/python2.7/site-packages (from zope.interface>=3.6.0->Twisted>=10.0.0->Scrapy)
Requirement already satisfied (use --upgrade to upgrade): cffi>=0.8 in /usr/local/lib/python2.7/site-packages (from cryptography>=0.2.1->pyOpenSSL->Scrapy)
Requirement already satisfied (use --upgrade to upgrade): pycparser in /usr/local/lib/python2.7/site-packages (from cffi>=0.8->cryptography>=0.2.1->pyOpenSSL->Scrapy)

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

import scrapy
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-6-51c73a18167b> in <module>()
----> 1 import scrapy

ImportError: No module named scrapy

Я пробовал следующее:

sudo ln -s /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/
4b9b3361

Ответ 1

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

Сначала, чтобы узнать, какую версию python вы используете, просто введите which python. Вы должны либо увидеть:

which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python

если вы перейдете к правильной версии python или:

which python
/usr/bin/python

Если вы идете на "неправильную" версию. Чтобы заставить pip перейти в нужную версию, вам сначала нужно изменить путь:

 export PATH=/Library/Frameworks/Python.framework/Versions/2.7/bin/python:${PATH}

typing ', который python' теперь приведет вас к правильному результату. Затем установите pip (если он еще не установлен для этой установки python). Наконец, используйте его. теперь все должно быть хорошо.

Ответ 2

1 - Что-то, что может работать

Исполняемый pip фактически представляет собой Python script.

По умолчанию он содержит (в Linux):

#!/usr/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'pip==1.5.6','console_scripts','pip'
__requires__ = 'pip==1.5.6'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('pip==1.5.6', 'console_scripts', 'pip')()
    )

Итак, если вы получили то же самое в MacOS, pip всегда будет использовать /usr/bin/python.

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

Если which python возвращает /usr/bin/python, то что-то пошло не так, когда вы установили свою собственную версию. Если это /Library/Frameworks/Python.framework/Versions/2.7/bin/python, вы можете напрямую вызвать:

sudo python `which pip` install scikit-learn --upgrade

Однако есть вероятность, что это не сработает. Причина в том, что sudo сбрасывает все переменные среды. Чтобы это сработало, проще всего было бы использовать:

sudo -E pip install scikit-learn --upgrade

или

sudo -E python `which pip` install scikit-learn --upgrade

в зависимости от вашей настройки.

2 - Что вам следует делать

pip не считался чем-то, что должно выполняться root. Самый лучший способ использовать его - установить локальную, не root-версию python. Вам просто нужно убедиться, что вы используете его по умолчанию, установив правильные переменные среды (например, PATH в Linux), а затем установите pip без sudo, используя эту версию python.

Еще лучший способ - установить virtualenv из вашей корневой установки.

Таким образом, вы можете установить/обновить все, что хотите, без привилегий root, и никогда больше не беспокоиться о том, почему sudo pip не работает. Вы также избегаете предоставления привилегий root всем, что находится на Pypi, и это гарантирует, что вы не будете смешивать системные библиотеки с вашими собственными.

Ответ 3

Virtualenv является вашим другом

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

Ответ 4

Я полностью согласен с ребятами, лучше использовать virtualenv, чтобы вы могли настроить настраиваемую среду для каждого проекта. Он идеален для обслуживания, потому что он как другой мир для каждого проекта, и каждое обновление приложения, которое вы делаете, не будет мешать другим проектам.

Здесь вы можете найти кратчайший путь virtualenv относительно установки и первых шагов.

Ответ 5

Это то, что сработало для меня в Windows. Причиной является несколько установок python.

  • обновить путь с правильным python
  • удалить pp используя python -m pip uninstall pip setuptools
  • перезапуск окон не работал до перезагрузки

Ответ 6

Убедитесь, что версия pip соответствует вашей версии python.

чтобы использовать вашу версию python:

python -V

затем установите правильный пип. Возможно, у вас уже есть intall в этом случае, попробуйте использовать:

pip-2.5 install...

pip-2.7 install...

или для тех, кто использует macports, убедитесь, что ваша версия соответствует.

выбрать порт --list pip

затем измените на ту же самую версию python, которую вы используете.

Выбор порта sudo --set pip pip27

Надеюсь, это поможет. Это работает на моем конце.

Ответ 7

Ответ 8

Вы должны удалить существующий питон, а затем загрузить новую версию.