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/
Ответы
Ответ 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
Вы должны удалить существующий питон, а затем загрузить новую версию.