【问题标题】:Import Error: cannot import name get_importer导入错误:无法导入名称 get_importer
【发布时间】:2017-08-11 01:32:08
【问题描述】:

我正在尝试运行 scanpypi 脚本 - Buildroot (2017.02) 的支持脚本,但我收到 ImportError: cannot import name get_importer。

Traceback(最近一次调用最后一次): 文件“./support/scripts/scanpypi”,第 52 行,在 导入设置工具 文件“/usr/local/lib/python2.7/dist-packages/setuptools/init.py”,第 12 行,在 导入 setuptools.version 文件“/usr/local/lib/python2.7/dist-packages/setuptools/version.py”,第 1 行,在 导入 pkg_resources 文件“/usr/local/lib/python2.7/dist-packages/pkg_resources/init.py”,第 40 行,在 从 pkgutil 导入 get_importer ImportError: 无法导入名称 get_importer

我在 scanpypi 脚本的开头添加了以下几行以查看 sys.path

  • 导入系统
  • 打印(sys.path)

输出:

['/home/timo/bldr_lab/buildroot/support/scripts', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', ' /usr/lib/python2.7/lib-tk'、'/usr/lib/python2.7/lib-old'、'/usr/lib/python2.7/lib-dynload'、'/usr/local/ lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']

由于 pkgutil 在 /usr/lib/python2.7 目录中,问题不是路径问题。

我也卸载并重新安装了python2.7、pip和setuptools但没有帮助。

ImportError 可能是什么原因?

【问题讨论】:

  • 如果你python -c 'import pkgutil; print(pkgutil.__file__)会发生什么?
  • 我也遇到了这个问题。我尝试使用pudb 对其进行调试,但在调试器中它就像一个魅力。我在不同的 Linux 发行版上尝试过 scanpypi 并且都表现出相同的行为。

标签: python linux buildroot


【解决方案1】:

这是 Buildroot 中的一个错误。这是由于提交 12683184b1969f65680cb7db55b547a620a9860f 在支持/脚本中引入了 pkgutil.py 文件。这与 setuptools 中的 pkgutil.py 冲突。

解决方案是将pkgutil.py 文件重命名为其他名称,并相应地更新其他脚本中的导入。如果您这样做,请在the Buildroot mailing list 上发布补丁,这样每个人都可以受益。有关如何发布补丁的详细信息,请参阅the manual

【讨论】:

  • 感谢您的信息。我实际上注意到今天早上“pkgutil.py”在 support/scripts 文件夹中。我重命名了它,然后 scanpypi 脚本开始按预期工作。
  • 我刚离开然后想知道为什么 pkgutil.py 在文件夹中,但现在我知道了。不知何故,我认为报告错误将是解决问题的正确方法——我有点不愿意接触其他人的代码。无论如何,我会在今天晚些时候尝试看看这个。
猜你喜欢
  • 2021-02-19
  • 2014-01-29
  • 2016-11-21
  • 2018-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-03
相关资源
最近更新 更多