【问题标题】:No module named X, even though it's there没有名为 X 的模块,即使它在那里
【发布时间】:2018-10-12 10:10:51
【问题描述】:

在尝试运行用 Python2 编写的应用程序时,我遇到了导入错误,但在查看文件时,它们都在那里?

所有与python2-six相关的文件:

python2-six /usr/
python2-six /usr/lib/
python2-six /usr/lib/python2.7/
python2-six /usr/lib/python2.7/site-packages/
python2-six /usr/lib/python2.7/site-packages/six-1.11.0-py2.7.egg-info/
python2-six /usr/lib/python2.7/site-packages/six-1.11.0-py2.7.egg-info/PKG-INFO
python2-six /usr/lib/python2.7/site-packages/six-1.11.0-py2.7.egg-info/SOURCES.txt
python2-six /usr/lib/python2.7/site-packages/six-1.11.0-py2.7.egg-info/dependency_links.txt
python2-six /usr/lib/python2.7/site-packages/six-1.11.0-py2.7.egg-info/top_level.txt
python2-six /usr/lib/python2.7/site-packages/six.py
python2-six /usr/lib/python2.7/site-packages/six.pyc
python2-six /usr/lib/python2.7/site-packages/six.pyo
python2-six /usr/share/
python2-six /usr/share/licenses/
python2-six /usr/share/licenses/python2-six/
python2-six /usr/share/licenses/python2-six/LICENSE

运行程序时:

File "/usr/lib/python2.7/site-packages/configobj.py", line 22, in <module>
    import six
ImportError: No module named six

我的 Python2.7 的 PYTHONPATH 是:

/usr/lib/python27.zip
/usr/lib/python2.7
/usr/lib/python2.7/plat-linux2
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/usr/lib/python2.7/site-packages
/usr/lib/python2.7/site-packages/gtk-2.0

为什么模块没有被拾取? 我应该提到我在 Arch Linux 上,Python 2.7 和 Python 3.7 并排运行。将 /usr/bin/python 符号链接到 python3。

【问题讨论】:

  • 以交互模式打开python 2.7。输入help('modules')。你能看到six 列在那里吗?
  • 尝试使用相应的 python bin 路径更新 PATH 环境变量,例如 export PATH=/usr/bin/python:$PATH 并尝试运行它
  • @raj 我看不到那里列出了六个
  • @LakshmiBhavani 没有解决它
  • 尝试添加安装模块的python路径@Str-Gen

标签: python


【解决方案1】:

这通常意味着您的环境设置不正确。除了符号链接bin 路径之外,虚拟环境还有更多功能。

虽然在 python 3 中你可以做python -m venv venv_name,但在 python 2 中你需要创建一个虚拟环境才能运行。

你是如何创建你的 virtualenv 的?

我会激活环境; source /path/to/bin/activate.

使用pip list 命令,看看它说了什么。

【讨论】:

  • 我没有使用 virtualenv
  • 因此,如果您安装了 python 2,它有自己的站点包,并且您正在尝试使用 python 3 解释器来做其他事情。它有点时髦的情况。如果你想并排运行它们,你应该创建一个 python 2 虚拟环境。这就是为什么它不起作用。
  • 我专门用python2调用程序,这还不足以确保使用正确版本的模块?
  • 不,很遗憾,事实并非如此。如果您对 virtualenv 正在发生的事情感兴趣,请查看 activate 脚本并了解其必要性。您可以在 virtualenv 中使用解释器来软激活它,但您仍然必须为此设置 virtualenv。
猜你喜欢
  • 2012-08-13
  • 2020-04-10
  • 1970-01-01
  • 2021-04-19
  • 1970-01-01
  • 2022-07-29
  • 2018-01-18
  • 2019-12-02
  • 2019-06-07
相关资源
最近更新 更多