Pip安装没有安装到正确的目录?

时间:2014-09-01 14:19:27

标签: python bash installation pip

我似乎无法正确使用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 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/

10 个答案:

答案 0 :(得分:25)

从评论到原始问题,似乎你安装了多个版本的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}

键入&#39;哪个python&#39;现在可以让你找到正确的结果。接下来,安装pip(如果尚未为此python安装安装pip)。最后,使用它。你现在应该没事。

答案 1 :(得分:4)

这对我在Windows上有用。原因是多个python安装

  1. 使用正确的python更新路径
  2. 使用python -m pip uninstall pip setuptools
  3. 卸载点子
  4. 重新启动Windows 直到重新启动才开始工作

答案 2 :(得分:2)

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应执行的内容。实际使用它的最佳方法是安装本地非root用户python版本。您必须确保默认情况下通过设置正确的环境变量(例如Linux上的PATH)来使用它,然后使用该python版本安装pip而不使用sudo。< / p>

更好的方法是从根安装设置virtualenv

通过这种方式,您可以在没有root权限的情况下安装/更新任何您想要的内容,并且再也不用担心sudo pip无效的原因。您还可以避免为Pypi上的任何内容提供root权限,这样可以保证您不会将系统库与您自己的系统库混用。

答案 3 :(得分:2)

Virtualenv是你的朋友

即使您想要将软件包添加到主安装中,最好还是先在虚拟环境中进行,以确保与其他软件包的兼容性。但是,如果你熟悉virtualenv,你可能会发现没有理由在你的基本安装中安装任何东西。

答案 4 :(得分:1)

我完全赞同这些人,使用 virtualenv 会更好,这样您就可以为每个项目设置自定义环境。它非常适合维护,因为它对于每个项目来说都是一个不同的世界,并且您所做的每个应用程序的更新都不会干扰其他项目。

Here you can find a nutshell of virtualenv与安装和第一步有关。

答案 5 :(得分:0)

  1. https://pypi.python.org/pypi/pip(焦油)
  2. 下载点子
  3. 解压缩tar文件
  4. cd到文件目录
  5. sudo python2.7 setup.py install

答案 6 :(得分:0)

你可以改变shebang线。我一直在新系统上这样做。

如果您希望pip安装到当前安装的Python版本,只需将shebang行更新为正确版本的pythons路径。

例如,要更改pip(而不是pip3)以安装到Python 3:

#!/usr/bin/python

要:

#!/usr/bin/python3

使用pip安装的任何模块都应该安装到Python而不是Python。

或者你可以改变路径。

答案 7 :(得分:0)

我已经尝试过了,并且对我有用

curl -O  https://files.pythonhosted.org/packages/c0/4d/d2cd1171f93245131686b67d905f38cab53bf0edc3fd1a06b9c667c9d046/boto3-1.14.29.tar.gz

tar -zxvf boto3-1.14.29.tar.gz

cd boto3-1.14.29/

用所需的python解释器替换X,因为我的是python3

sudo pythonX setup.py install

答案 8 :(得分:-1)

确保你的pip版本符合你的python版本。

使用python版本:

python -V

然后安装正确的点子。在这种情况下,您可能已经尝试使用:

pip-2.5安装......

pip-2.7安装......

或者对于那些使用macport的人来说,请确保您的版本匹配。

port select --list pip

然后更改为您正在使用的相同python版本。

sudo port select --set pip pip27

希望这会有所帮助。它适用于我。

答案 9 :(得分:-2)

你应该卸载现有的python,然后下载新版本。