【发布时间】: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