【问题标题】:How to resolve: ImportError: cannot import name 'HttpNtlmAuth' in python3 script?如何解决:ImportError: cannot import name 'HttpNtlmAuth' in python3 script?
【发布时间】:2018-10-20 18:49:26
【问题描述】:

我已经使用“sudo python3 -m pip install requests”(和 requests_ntlm 分别)安装了 requests 和 requests_ntlm 模块,并且两个安装都成功了。

当我尝试执行“从请求导入 HttpNtlmAuth”时,我收到一条错误消息,指出“无法导入名称 'HttpNtlmAuth'。我的“导入请求”行没有出现此错误。

当我执行“sudo python3 -m pip list”时,我看到两者都已安装并且是最新版本。

我之前没有遇到过这个错误,只是“无法导入模块”,所以我不熟悉如何解决这个问题。

编辑 1:附加信息。当我从命令行以“sudo”运行此脚本时,它可以工作。因为我正在使用“exec”从 PHP 文件中运行我的 python 脚本,所以我并不特别想以 root 用户身份运行它。有没有办法解决这个问题,或者可能使用 sudo 运行 exec 语句?

【问题讨论】:

  • 做点什么!所以我注意到当我用“sudo”运行我的脚本时,它运行良好。我运行脚本的方式是在 PHP 文件中。必须将其作为“sudo”运行是否正常?
  • 不确定,但是如果您从 PHP 文件运行它,它可能正在由 www-data 用户执行,或者其他取决于您的配置。在这种情况下,您可能需要为该用户安装模块,或者确保它具有访问权限。检查此链接:stackoverflow.com/questions/39471295/… 另外,php 是否使用 python3 运行脚本?也许它正在使用python2。
  • 如果您使用的是虚拟环境,则不需要运行 sudo,您应该使用虚拟环境来隔离对一个应用程序的任何升级。 python3 -m venv /tmp/ve 将在 /tmp/ve 中安装环境,然后使用 /tmp/ve/bin/pip install requests 你的应用程序将没有问题这样做。 PS 以使用此 ve /tmp/ve/bin/python myscript.py 运行脚本,或者您可以在脚本的 shebang 行中包含 #!/tmp/ve/bin/python

标签: python-requests python-3.6


【解决方案1】:

HttpNtlmAuth 类位于 requests_ntlm 包中,因此您需要:

import requests
from requests_ntlm import HttpNtlmAuth

然后您就可以实例化您的身份验证

session = requests.Session()
session.auth = HttpNtlmAuth('domain\\username','password')
session.get(url)

【讨论】:

    猜你喜欢
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 2019-10-25
    相关资源
    最近更新 更多