在 python shell / 交互式提示中找到模块,但在文件中导入时获取 ModuleNotFound
Module found on python shell / interactive prompt, but getting ModuleNotFound on import in file
我正在尝试使用 python-twitter
(https://python-twitter.readthedocs.io/en/latest/index.html),但运气不佳。 python-twitter
模块是用 import twitter
调用的,不幸的是,当我尝试通过我的脚本从命令行执行此操作时,它不起作用。
令我困惑的是,从 python shell.
执行时没有类似的错误
一切都安装正确,看起来:
(venv) user@computer:~/Documents/projectdir$ pip3 install python-twitter
Requirement already satisfied: python-twitter in /home/user/.local/lib/python3.8/site-packages (3.5)
Requirement already satisfied: requests-oauthlib in /home/user/.local/lib/python3.8/site-packages (from python-twitter) (1.3.0)
Requirement already satisfied: requests in /usr/lib/python3/dist-packages (from python-twitter) (2.22.0)
Requirement already satisfied: future in /usr/lib/python3/dist-packages (from python-twitter) (0.18.2)
Requirement already satisfied: oauthlib>=3.0.0 in /usr/lib/python3/dist-packages (from requests-oauthlib->python-twitter) (3.1.0)
(venv) user@computer:~/Documents/projectdir$ pip3 install twitter
Requirement already satisfied: twitter in /home/user/.local/lib/python3.8/site-packages (1.18.0)
(venv) user@computer:~/Documents/projectdir$ pip3 freeze > requirements.txt
(venv) user@computer:~/Documents/projectdir$ echo "$(<requirements.txt)"
...
python-twitter==3.5
...
twitter==1.18.0
...
然而我的脚本抛出错误:
(venv) user@computer:~/Documents/projectdir$ sudo python3 authentication_test.py
Traceback (most recent call last):
File "authentication_test.py", line 1, in <module>
import twitter
ModuleNotFoundError: No module named 'twitter'
尽管 python 找到了 twitter
模块 shell:
(venv) user@computer:~/Documents/projectdir$ python3
Python 3.8.5 (default, Jul 28 2020, 12:59:40)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import twitter
>>> twitter.Api()
<twitter.api.Api object at 0x7f11b0056a60>
>>>
这是怎么回事?我认为 twitter
和 python-twitter
之间可能存在问题,但我确实 pip3 uninstall twitter
并且问题仍然存在。
我应该注意,虽然我用注释将它们分开,但上面的代码片段是连续完成的。
想法?
正如 Aaron 所说(谢谢),答案是 sudo
使我脱离了 virtualenv
上下文,因此软件包不可用。
我正在尝试使用 python-twitter
(https://python-twitter.readthedocs.io/en/latest/index.html),但运气不佳。 python-twitter
模块是用 import twitter
调用的,不幸的是,当我尝试通过我的脚本从命令行执行此操作时,它不起作用。
令我困惑的是,从 python shell.
执行时没有类似的错误一切都安装正确,看起来:
(venv) user@computer:~/Documents/projectdir$ pip3 install python-twitter
Requirement already satisfied: python-twitter in /home/user/.local/lib/python3.8/site-packages (3.5)
Requirement already satisfied: requests-oauthlib in /home/user/.local/lib/python3.8/site-packages (from python-twitter) (1.3.0)
Requirement already satisfied: requests in /usr/lib/python3/dist-packages (from python-twitter) (2.22.0)
Requirement already satisfied: future in /usr/lib/python3/dist-packages (from python-twitter) (0.18.2)
Requirement already satisfied: oauthlib>=3.0.0 in /usr/lib/python3/dist-packages (from requests-oauthlib->python-twitter) (3.1.0)
(venv) user@computer:~/Documents/projectdir$ pip3 install twitter
Requirement already satisfied: twitter in /home/user/.local/lib/python3.8/site-packages (1.18.0)
(venv) user@computer:~/Documents/projectdir$ pip3 freeze > requirements.txt
(venv) user@computer:~/Documents/projectdir$ echo "$(<requirements.txt)"
...
python-twitter==3.5
...
twitter==1.18.0
...
然而我的脚本抛出错误:
(venv) user@computer:~/Documents/projectdir$ sudo python3 authentication_test.py
Traceback (most recent call last):
File "authentication_test.py", line 1, in <module>
import twitter
ModuleNotFoundError: No module named 'twitter'
尽管 python 找到了 twitter
模块 shell:
(venv) user@computer:~/Documents/projectdir$ python3
Python 3.8.5 (default, Jul 28 2020, 12:59:40)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import twitter
>>> twitter.Api()
<twitter.api.Api object at 0x7f11b0056a60>
>>>
这是怎么回事?我认为 twitter
和 python-twitter
之间可能存在问题,但我确实 pip3 uninstall twitter
并且问题仍然存在。
我应该注意,虽然我用注释将它们分开,但上面的代码片段是连续完成的。
想法?
正如 Aaron 所说(谢谢),答案是 sudo
使我脱离了 virtualenv
上下文,因此软件包不可用。