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

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

/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 установить Скрэппи!--7-->

Я получаю следующее

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/

9 ответов


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

во-первых, чтобы узнать, какую версию 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}

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


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

  1. путь обновления с правильным python
  2. удалить pip с помощью python -m pip uninstall pip setuptools
  3. перезагрузите windows не работал до перезагрузки

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

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

по умолчанию он содержит (в 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 должен выполнить. Этот фактический лучший способ использовать его-установить локальную, не корневую версию python. Вы просто должны убедиться, что используете его по умолчанию, настроив правильные переменные среды (например,PATH в Linux), а затем установите pip без sudo используя эту версию python.

еще лучше будет установить virtualenvs из вашей корневой установки.

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


Virtualenv - твой друг

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


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

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


  1. скачать pip в https://pypi.python.org/pypi/pip (tar)
  2. распаковать tar-файл
  3. cd в каталог файла
  4. sudo python2.7 setup.py установить

вы можете просто изменить линию shebang. Я делаю это все время на новых системах.

если вы хотите pip чтобы установить текущую версию Python, просто обновите строку shebang до правильной версии пути pythons.

например, чтобы изменить pip (не pip3) для установки на Python 3:

#!/usr/bin/python

в:

#!/usr/bin/python3

любой модуль, который вы устанавливаете с помощью pip следует установить на Python не Python.

или вы могли бы просто изменить путь.


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

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

python-V

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

pip-2.5 установить ...

pip-2.7 установить ...

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

port select --list pip

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

sudo port select --set pip pip27

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


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