安装完成后仍提示"ImportError: No module named httplib2"。

49
我很难理解为什么在确保安装了httplib2之后,我会收到“ImportError: No module named httplib2”的错误消息。请参见以下内容:

在确保安装了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]

管道问题! >向天空摇拳头<


1
你能执行 which python 吗? - poke
1
啊哈...我明白了... - Ben
3
看起来pip正在为第二个Python安装程序安装我的库,因此当我运行Python时,它找不到已安装的模块。这可以通过$ /usr/local/bin/python Python 2.7.6(默认值,2013年12月27日,14:07:24)[GCC 4.2.1兼容Apple LLVM 5.0(clang-500.2.79)] on darwin Type "help",“版权”,“信用”或“许可证”以获取更多信息。>>> import httplib >>>来证实。 - Ben
6个回答

51

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

Python 2:

pip2 install httplib2 --upgrade

Python 3:

pip3 install httplib2 --upgrade

要检查已安装的内容及其位置,请尝试:

pip list
pip2 list
pip3 list

然后确保您正在使用正确的Python实例(如其他答案所建议的)。


18

将以下内容添加到 .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

在Ubuntu上:

通过Ubuntu软件包管理器安装该库解决了我的问题:

sudo apt-get install python-httplib2

3

我在Windows 7上遇到了类似的问题。

以下是我的解决方法:

  1. 安装Python:只需下载Python并按照向导的安装说明进行操作即可。
  2. 现在,应该可以从命令行访问Python。但在我的情况下,调用

    py script.py

    导致相同的错误:"ImportError: No module named httplib2"

  3. 然后,我必须将Python和Pip安装路径添加到“Path”环境变量中,以便安装httplib2模块,并成功地执行脚本。

    我按照这里提供的说明进行操作。

  4. 然后,我就能够执行

    pip3 install httplib2 --upgrade

  5. 最终,我成功地执行了包含httplib2导入语句的脚本。


0
对我来说,在使用pip install之后,我使用pip list检查模块安装的位置。然后,我在终端中进入该目录并运行export PYTHONPATH=`pwd` ,问题就解决了。

0
如果以上方法都不起作用,您可以使用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']

如果库已经直接位于这些路径之一下面,请检查其权限,因为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。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接