【问题标题】:pip says modules are there, but Python 3 program cannot find thempip 说模块在那里,但 Python 3 程序找不到它们
【发布时间】:2022-01-09 07:28:50
【问题描述】:

我有一些旧代码正在尝试使用,它使用 httplib2 Python 库。相同的代码在 Linux(例如 Raspberry Pi)上运行良好。

我已经使用pip卸载了httplib2 lib并使用pip3重新安装。

这是“pip list”(或“pip3 list”)显示的内容:

C:\Users\g7847>pip list
Package                 Version
----------------------- ---------
bcrypt                  3.2.0
cachetools              4.2.4
certifi                 2021.5.30
cffi                    1.15.0
chardet                 4.0.0
cryptography            36.0.0
cycler                  0.10.0
google-auth             2.3.3
google-auth-httplib2    0.1.0
httplib2                0.20.2
idna                    2.10
kiwisolver              1.3.1
matplotlib              3.4.2
numpy                   1.21.0
paramiko                2.8.1
Pillow                  8.3.1
pip                     21.3.1
pyasn1                  0.4.8
pyasn1-modules          0.2.8
pycparser               2.21
PyNaCl                  1.4.0
pyparsing               2.4.7
python-dateutil         2.8.2
requests                2.25.1
requests-http-signature 0.2.0
rsa                     4.8
setuptools              57.1.0
six                     1.16.0
urllib3                 1.26.6
wheel                   0.36.2

C:\Users\g7847>

然而:

C:\Users\g7847>python3 sshConnect.py
Traceback (most recent call last):
  File "C:\Users\g7847\sshConnect.py", line 12, in <module>
    import httplib2 
ModuleNotFoundError: No module named 'httplib2 '

这是开头的导入部分。唯一被投诉的库是 httlib2。

import json
import time
import subprocess
import datetime
import base64
import sys
import os
import getpass
import errno
import re
import string
import httplib2

【问题讨论】:

  • 您运行的 pip 似乎与您运行的 python 不同。
  • 我在堆栈上发现了这个,同样的问题。它解决了你的问题吗? stackoverflow.com/questions/22735496/…>
  • pip3 给出与 pip 相同的结果。你是这个意思吗?
  • No module named 'httplib2 '你的2后面好像有空格或者其他奇怪的字符,是在你的留言里还是在这里举报的时候打错了?

标签: python-3.x


【解决方案1】:

pip 和 pip3 不一样。

pip 将根据系统 PATH 变量中的确切内容使用您的 Python 版本之一,而使用 pip3 您可以确保该模块将安装在 python3 库中。

那么,您能否仔细检查一下该模块是否实际安装在 python3 库中?

如果模块确实安装在python3库中,你可以检查PATH变量是否正确。 (您可以使用以下命令检查 PATH:Reference

【讨论】:

    【解决方案2】:

    httplib2 库是 Python 3 中标准库的一部分。

    import httplib ImportError: No module named httplib

    它是否安装在版本 2.x 上?

    pip2 install httplib2
    

    【讨论】:

    • 我只有pip和pip3,没有pip2。
    • 我的 PATH 中有 python37 和 python39。
    • 运行 'httplib2' in sys.modules 是否返回 True
    • @DigitalLarry 这听起来像你的问题。您的一条 python 已安装 pip 和软件包。另一条蟒蛇没有。当你运行 python 和 pip 时,你应该确定你使用的是哪个 python。我建议使用python3 -m pip 和 python3。这样他们应该是一样的。
    • 惊讶 import jsonhttplib2 之前没有出错。它不在您的点子列表输出中......
    【解决方案3】:

    我仍然不知道发生了什么。由于其他原因,我决定切换到请求库而不是 httplib2。我的程序在 Idle 中运行良好,我还在命令行上使用 pyinstaller 制作了它的 Windows EXE。我以为我无法直接将它作为 Python 程序运行,但我只是检查了一下,它很好。

    可能成为问题的一件事是我也一直在 Windows 中使用 WSL (Ubuntu) 并在那里安装了 httplib2。我真的不知道。为了以防万一,我确实卸载了它,但无论如何我不再使用 httplib2。

    如果您从 Python.org 运行 Windows 3.9 安装程序,则会出现一个奇怪的问题。如果您随后尝试运行 Python,则 Windows 应用商店会打开,您只能安装它。所以我卸载并重新安装了几次,但最后一次只是 Windows Store 版本,因为它似乎相当坚持。

    【讨论】:

      猜你喜欢
      • 2014-10-10
      • 1970-01-01
      • 2017-09-13
      • 2012-08-13
      • 2015-08-27
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多