【问题标题】:Problems in importing self-defined packages and modules?导入自定义包和模块的问题?
【发布时间】:2013-09-07 14:46:53
【问题描述】:

我正在使用 Spyder。

我刚刚开始构建一个项目。它的架构目前如图所示。

如图所示,我有 2 个包,其中一个现在有一个名为 trajectorygeneration 的模块。 __init__.py 文件都是自动生成的。我正在尝试将模块导入main.py,但我最终得到了这样的错误消息:

>>> from generation import trajectorygeneration
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named generation

我该如何解决这个问题?

【问题讨论】:

  • Spyder(基本上所有的 Python IDE)都使用 PYTHONPATH 来查找库。您可能的问题是您无法在 Spyder 用于查找模块和包的默认搜索路径中访问这些包。您需要以某种方式修改您的 PYTHONPATH 以包含您从中运行“main.py”的目录。此目录包含您的 IDE 找不到的包“generation”。否则,您将不得不使用与您的“main.py”相同的目录中的常规 python 解释器来正确运行您的代码。
  • @ShashankGupta 我当前的 PYTHONPATH 只是我当前项目的目录。我需要为此做些什么吗?
  • 嗯,如果是这样的话,那么我很抱歉地说我真的不知道为什么你的 Python 找不到“生成”模块。 pythonpath 是大多数 Python IDE 查找模块的方式。我个人不使用 Spyder,所以可能有一些我不知道的不同路径设置。
  • @ShashankGupta 谢谢你的好意!

标签: python module package project spyder


【解决方案1】:

(Spyder dev here) 这是 Spyder 中的一个错误。我们没有将项目的路径添加到 PYTHONPATH,这就是为什么您在打开项目后无法在控制台中导入项目的原因。我为您创建了一个issue,我们将在下一个主要版本(即 2.3)中修复它。

目前的一种解决方法(正如@Jblasco 所提到的)是使用我们的 PYTHONPATH 管理器自己添加项目的路径。完成后,您需要打开一个新的控制台以使更改生效。

【讨论】:

  • 是的,打开一个新的控制台是关键!
【解决方案2】:

可能是生成不在您的路径中并且python找不到包?

见:Expand Python Search Path to Other Source

此外,Spyder 有一个“pythonpath”管理器(至少我有),您可以在其中包含任何文件夹。问题是,如果你这样做,那么 python 控制台,例如,很可能不包括那些,所以你不能在控制台中导入。

【讨论】:

  • 你能告诉我我应该如何处理“pythonpath”管理器吗?
  • 在我的版本中,pythonpath 管理器位于工具中。当我打开它时,会出现一个空白屏幕。如果我点击添加路径,则会打开另一个屏幕。我建议您选择文件夹“集群”并接受。这会将它添加到您的 pythonpath 中。我再次强调,这仅适用于 spyder,没有别的。
  • 是的,没错。我做了同样的事情,但错误仍然存​​在。
【解决方案3】:

好像是笔误造成的。

在你的图片中,目标文件名为trajectorygeneration.py。 但 main.py 会导入名为 trajectorygeneration's' 的模块。

【讨论】:

  • 对不起! 's' 是无意中的坑。实际运行时,报错信息中没有 s。感谢您带我去看!
  • 我明白了。很抱歉这不能帮助您解决问题!
  • 谢谢你的好意!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-09
  • 1970-01-01
  • 2012-06-17
  • 2021-02-20
  • 1970-01-01
相关资源
最近更新 更多