【问题标题】:How to fix ImportError: No module named packages.urllib3?如何修复 ImportError:没有名为 packages.urllib3 的模块?
【发布时间】:2015-02-10 22:51:54
【问题描述】:

我在 Ubuntu 机器上运行 Python 2.7.6。当我在终端中运行twill-sh(Twill 是用于测试网站的浏览器)时,我得到以下信息:

Traceback (most recent call last):
  File "dep.py", line 2, in <module>
    import twill.commands
  File "/usr/local/lib/python2.7/dist-packages/twill/__init__.py", line 52, in <module>
    from shell import TwillCommandLoop
  File "/usr/local/lib/python2.7/dist-packages/twill/shell.py", line 9, in <module>
    from twill import commands, parse, __version__
  File "/usr/local/lib/python2.7/dist-packages/twill/commands.py", line 75, in <module>
    browser = TwillBrowser()
  File "/usr/local/lib/python2.7/dist-packages/twill/browser.py", line 31, in __init__
    from requests.packages.urllib3 import connectionpool as cpl
ImportError: No module named packages.urllib3

但是,我可以在 Python 控制台中导入 urllib 就好了。可能是什么原因?

【问题讨论】:

    标签: python urllib2 urllib3 twill


    【解决方案1】:

    需要指出的是,如果你犯了我犯的新手错误,使用“旧”python 命令运行 python 3 脚本,即运行脚本为

    python3 <script>.py
    

    不是

    python <script>.py
    

    【讨论】:

      【解决方案2】:

      问题解决:

      pip install --upgrade urllib3==1.19.1
      pip install --upgrade requests
      

      【讨论】:

        【解决方案3】:

        python3

        #note that requests.packages.urllib3 is just an alias for urllib3
        from urllib3 import disable_warnings
        from urllib3.exceptions import InsecureRequestWarning
        disable_warnings(InsecureRequestWarning)
        

        【讨论】:

        • 虽然这可能会回答问题,但您应该编辑您的答案以包含一些解释,说明为什么这可以解决问题中的问题。这对于以后遇到相同问题的人来说更有价值
        【解决方案4】:

        如果您有基于 RHEL 的风格,那么:

        yum install -y python-requests

        基于 Debian/Ubuntu 的风格:

        apt-get install -y python-requests

        基于 Arch Linux 的风格:

        pacman -S python-requests

        【讨论】:

          【解决方案5】:

          如果您已经从默认构建中安装了“请求”,则可能需要

          sudo pip install --upgrade requests

          感谢@bkzland 对先前答案的评论:

          我按照这些步骤有同样的错误,我需要使用 sudo pip 每次安装 --upgrade 以使其工作。 – bkzland 2015 年 12 月 17 日在 12:57

          ---现在,如何在我的 setup.py 中使其成为依赖项?

          【讨论】:

          • 在设置中添加requires=['requests']
          • 难道不会找到旧版本的请求,现在满足依赖关系,并且我们得到了 OP 观察到的失败吗?
          • install_requires=['requests>=2.9']
          【解决方案6】:

          标准的urlliburllib2与第三方的urllib3是有区别的。

          看起来 twill 没有安装依赖项,所以你必须自己做。 Twill 依赖于requests 库,该库在幕后附带并使用urllib3。您还需要 lxmlcssselect 库。

          您可以将它们安装在终端上,如下所示:

          pip install requests

          pip install lxml

          pip install cssselect

          【讨论】:

          • 如果您是一般安装,您可能需要切换到 root 或在上述每个命令前加上 sudo 并在第一个之后输入您的密码。
          • 是的,我已经安装了这些软件包。首先我安装了 python-pip,然后使用 pip,我安装了其他包。错误消息没有变化。我什至重新安装了 Python,但没有运气。
          • 我按照这些步骤操作时遇到了同样的错误,我需要每次都使用 sudo pip install --upgrade 才能使其工作。
          猜你喜欢
          • 2019-01-23
          • 2020-04-28
          • 2016-11-18
          • 2020-01-26
          • 2015-08-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-07
          相关资源
          最近更新 更多