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

<p>кажется, я не могу правильно использовать sudo pip для установки в следующий каталог: </p><pre><code>/library/frameworks/python.framework/versions/2.7/lib/python2.7/site-packages/ </code></pre><p>так что я могу затем импортировать модуль с помощью python </p><p>я бегал </p><pre><code>sudo pip install scikit-learn --upgrade </code></pre><p>результат</p><pre><code>requirement already up-to-date: scikit-learn in /usr/local/lib/python2.7/site-packages cleaning up... </code></pre><p>тем не менее, это не в правильном каталоге</p><p>как мне установить sudo pip для установки в правильный каталог?</p><p>кроме того, я пробовал </p><p>sudo pip установить scrappy</p><p>я получаю следующее сообщение </p><pre><code>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/ 

судя по комментариям к исходному вопросу, у вас установлено несколько версий 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} </code></pre><p>набрав «какой питон», вы получите правильный результат. затем установите pip (если он еще не установлен для этой установки python). наконец, используйте это. с тобой должно быть все в порядке. </p>

<p>это то, что у меня работало на windows. причиной является несколько установок python</p><ol> <li>обновить путь с правильным питоном</li> <li>удалить pip с помощью <code>python -m pip uninstall pip setuptools</code></li> <li>перезапуск windows<em> не работал до перезагрузки </em></li> </ol>

<p> <a href="https://virtualenv.pypa.io/en/stable/">virtualenv</a> твой друг</p><p>даже если вы хотите добавить пакет в свою основную установку, все же лучше сначала сделать это в виртуальной среде, чтобы обеспечить совместимость с другими вашими пакетами. однако, если вы познакомитесь с virtualenv, вы, вероятно, обнаружите, что на самом деле нет причин устанавливать что-либо в базовую установку. </p>

<h2>1 - что-то, что может сработать</h2><p>исполняемый файл <code>pip</code> на самом деле является скриптом python.</p><p>по умолчанию он содержит (в linux):</p><pre><code>#!/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 \_\_== '\_\_main\_\_': sys.exit( load\_entry\_point('pip==1.5.6', 'console\_scripts', 'pip')() ) </code></pre><p>поэтому, если вы получите то же самое в macos, <code>pip</code> всегда будет использовать <code>/usr/bin/python</code>.</p><p>но это по умолчанию. вы по-прежнему можете предоставить нужную версию python, либо отредактировав файл, либо явно используя python.</p><p>если <code>which python</code> возвращает <code>/usr/bin/python</code>, значит, что-то пошло не так, когда вы установили свою версию. если это <code>/library/frameworks/python.framework/versions/2.7/bin/python</code>, вы можете напрямую позвонить:</p><pre><code>sudo python `which pip` install scikit-learn --upgrade </code></pre><p>однако велики шансы, что это не сработает. причина в том, что <code>sudo</code> сбрасывает все переменные окружения. чтобы это работало, проще всего было бы использовать:</p><pre><code>sudo -e pip install scikit-learn --upgrade </code></pre><p>или же </p><pre><code>sudo -e python `which pip` install scikit-learn --upgrade </code></pre><p>в зависимости от вашей настройки.</p><h2>2 - что вы должны сделать</h2><p><code>pip</code> не считался чем-то, что <code>root</code> должен выполнять. фактически лучший способ его использования - установить локальную версию без прав python. вам просто нужно убедиться, что вы используете его по умолчанию, настроив правильные переменные окружения (например, <code>path</code> в linux), а затем установите <code>pip</code> без <code>sudo</code>, используя эту версию python.</p><p>еще лучшим способом было бы установить <code>virtualenv</code>s из вашей корневой установки.</p><p>таким образом, вы можете установить/обновить все, что захотите, без привилегий root и больше никогда не беспокоиться о том, почему <code>sudo pip</code> не работает. вы также избегаете предоставлять привилегии root всем, что есть на pypi, и это гарантирует, что вы не смешиваете системные библиотеки с вашими.</p>

<p>я полностью согласен с ребятами, лучше использовать <strong>virtualenv</strong>, чтобы вы могли установить индивидуальную среду для каждого проекта. он идеально подходит для обслуживания, поскольку для каждого проекта он похож на другой мир, и каждое обновление приложения, которое вы делаете, не будет мешать другим проектам. </p><p> <a href="http://beni7ez.com/?p=58">здесь вы можете найти краткую информацию о virtualenv</a> , связанных с установкой и первыми шагами. </p>

<ol> <li>скачать pip по адресу <a href="https://pypi.python.org/pypi/pip">https://pypi.python.org/pypi/pip</a> (tar)</li> <li>распаковать файл tar</li> <li>перейдите в каталог файла</li> <li>sudo python2.7 setup.py установить</li> </ol>

<p>вы можете просто изменить линию шебанга. я делаю это все время на новых системах. </p><p>если вы хотите, чтобы <code>pip</code> устанавливался на текущую версию python, просто обновите строку shebang до правильной версии пути pythons. </p><p>например, чтобы изменить pip (не pip3) для установки на python 3:</p><pre><code>#!/usr/bin/python </code></pre><p>для того, чтобы:</p><pre><code>#!/usr/bin/python3 </code></pre><p>любой модуль, который вы устанавливаете с помощью <code>pip</code>, должен быть установлен на python, а не на python. </p><p>или вы можете просто изменить путь.</p>