“ImportError:没有名为 httplib2 的模块”即使在安装后

Posted

技术标签:

【中文标题】“ImportError:没有名为 httplib2 的模块”即使在安装后【英文标题】:"ImportError: No module named httplib2" even after installation 【发布时间】:2014-05-09 06:03:57 【问题描述】:

在确定 httplib2 已安装 之后,我很难理解为什么我会收到 ImportError: No module named httplib2。见下文:

$ which -a python
/usr/bin/python
/usr/local/bin/python 

$ pip -V
pip 1.4.1 from /usr/local/lib/python2.7/site-packages/pip-1.4.1-py2.7.egg (python 2.7

$ pip list
google-api-python-client (1.2)
httplib2 (0.8)
pip (1.4.1)
pudb (2013.5.1)
Pygments (1.6)
setuptools (1.3.2)
wsgiref (0.1.2)

$ pip install httplib2
Requirement already satisfied (use --upgrade to upgrade): httplib2 in /usr/local/lib/python2.7/site-packages
Cleaning up...

$ python
Python 2.7.5 (default, Sep 12 2013, 21:33:34) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import httplib2
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 ImportError: No module named httplib2

我也做过

$ find / | grep httplib2
/usr/local/lib/python2.7/site-packages/httplib2
/usr/local/lib/python2.7/site-packages/httplib2/__init__.py
[... edited for brevity]

管道! >对天挥拳

【问题讨论】:

你也可以which python吗? 啊……我看到了…… 好吧,看起来 pip 正在为第二个 python 安装安装我的库,所以当我运行 python 时,它找不到已安装的模块。由$ /usr/local/bin/python Python 2.7.6 (default, Dec 27 2013, 14:07:24) [GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.2.79)] on darwin Type "help", "copyright", "credits" or "license" for more information. &gt;&gt;&gt; import httplib &gt;&gt;&gt; 证明 【参考方案1】:

如果有多个 Python 实例(2 和 3),请尝试不同的 pip,例如:

Python 2:

pip2 install httplib2 --upgrade

Python 3:

pip3 install httplib2 --upgrade

要检查安装的内容和位置,请尝试:

pip list
pip2 list
pip3 list

然后确保您使用的是正确的 Python 实例(如 other answer 中所建议的那样)。

【讨论】:

【参考方案2】:

将此添加到 .bash_profile export PATH=/usr/local/bin:$PATH

然后得到:

$ which -a python
/usr/local/bin/python
/usr/bin/python
/usr/local/bin/python
$ python
Python 2.7.6 (default, Dec 27 2013, 14:07:24) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.2.79)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import httplib2
>>> 

不能确定为什么 pip 安装到 /usr/local 而不是系统默认值,但现在它们是相同的,所以它现在可以工作。

【讨论】:

【参考方案3】:

我在 Windows 7 上遇到了类似的问题。 以下是我的解决方法:

    安装 Python:只需 download Python 并按照向导的安装说明进行操作。

    现在,应该可以从命令行访问 Python。但是,就我而言,调用

    py 脚本.py 导致同样的错误:“ImportError: No module named httplib2”

    然后我必须将 Python 和 Pip 安装路径添加到“路径”环境变量中,以便安装 httplib2 模块,然后执行脚本而不会失败。 我按照here提供的说明进行操作。

    然后我就可以执行了

    pip3 安装 httplib2 --upgrade

    最后我成功地执行了包含httplib2 import语句的脚本。

【讨论】:

【参考方案4】:

在 Ubuntu 上:

使用 Ubuntu 包管理器安装库解决了我的问题:

sudo apt-get install python-httplib2

【讨论】:

【参考方案5】:

如果以上都不起作用,您可以使用sys.path 查看特定 python 正在检查哪些路径:

$ /usr/bin/python
Python 3.7.6 (default, Feb 26 2020, 20:54:15) 
[GCC 7.3.1 20180712 (Red Hat 7.3.1-6)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/lib64/python37.zip', '/usr/lib64/python3.7', '/usr/lib64/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages', '/usr/lib64/python3.7/site-packages', '/usr/lib/python3.7/site-packages']

如果 lib 已经直接位于这些路径之一下,请检查其权限,因为 pip 可能仅使用 root 所有者和组权限安装它:

$ sudo ls -FsCla /usr/local/lib/python3.7/site-packages
total 8
0 drwxr-x---. 13 root root  274 Jun  5 14:06 ./
0 drwxr-x---.  3 root root   27 Jun  5 14:02 ../
4 drwxr-x---.  3 root root 4096 Jun  5 14:02 requests/
0 drwxr-x---.  2 root root  102 Jun  5 14:02 requests-2.23.0.dist-info/

$ sudo ls -FsCla /usr/local/lib/python3.7
total 0
0 drwxr-x---.  3 root root  27 Jun  5 14:02 ./
0 drwxr-x---.  3 root root  23 Jun  5 14:02 ../
0 drwxr-x---. 13 root root 274 Jun  5 14:06 site-packages/

这是快速修复它的一种方法:

$ sudo find /usr/local/lib/python3.7 -type d -exec chmod 755  +
$ sudo find /usr/local/lib/python3.7 -type f -exec chmod 644  +

或者你可以使用 virtualenv。

【讨论】:

【参考方案6】:

对我来说,在使用pip install 之后,我使用pip list 来检查模块的安装位置。然后,我进入终端中的那个目录并运行export PYTHONPATH=`pwd` ,修复它

【讨论】:

以上是关于“ImportError:没有名为 httplib2 的模块”即使在安装后的主要内容,如果未能解决你的问题,请参考以下文章