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
- путь обновления с правильным python
- удалить pip с помощью
python -m pip uninstall pip setuptools
- перезагрузите 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.
еще лучше будет установить virtualenv
s из вашей корневой установки.
таким образом, вы можете установить / обновить все, что хотите, без привилегий root и никогда не беспокоиться о том, почему sudo pip
не работает. Вы также избегали бы предоставлять привилегии root тому, что находится на Pypi, и это гарантировало бы, что вы не смешиваете системные библиотеки со своими.
Virtualenv - твой друг
даже если вы хотите добавить пакет в основную установку, все равно лучше сделать это в виртуальной среде, чтобы обеспечить совместимость с другими пакетами. Однако, если вы познакомитесь с virtualenv, вы, вероятно, обнаружите, что на самом деле нет причин устанавливать что-либо в вашей базовой установке.
Я полностью согласен с ребятами, лучше использовать virtualenv Так что вы можете установить пользовательскую среду для каждого проекта. Он идеально подходит для обслуживания, потому что это как другой мир для каждого проекта, и каждое обновление приложения, которое вы делаете, не будет мешать другим проектам.
здесь вы можете найти в двух словах virtualenv связанные с установкой и первыми шагами.
- скачать pip в https://pypi.python.org/pypi/pip (tar)
- распаковать tar-файл
- cd в каталог файла
- 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
надеюсь, что это помогает. Это работает на моем конце.