PyCharm中未解决的参考问题

pro*_*eek 338 python ide pycharm

我有一个目录结构

??? simulate.py
??? src
?   ??? networkAlgorithm.py
?   ??? ...
Run Code Online (Sandbox Code Playgroud)

我可以访问网络模块sys.path.insert().

import sys
import os.path
sys.path.insert(0, "./src")
from networkAlgorithm import *
Run Code Online (Sandbox Code Playgroud)

但是,pycharm抱怨它无法访问模块.我如何教pycham来解决参考?

在此输入图像描述

Gam*_*iac 756

手动将其添加为你所做确实这样做的一种方式,但有一个简单的方法,那就是通过简单地告诉您要的加pycharm src文件夹作为源根目录,然后添加源根你的Python路径.

这样,您就不必在解释器的设置中硬编码:

  • 添加src为源内容根目录:

                            在此输入图像描述

  • 然后确保添加添加源到您的PYTHONPATH:

在此输入图像描述

  • 现在将解决导入:

                      在此输入图像描述

通过这种方式,您可以添加任何您想要的源根,事情就可以了.但是,如果您将其取消标记为源根,则会出现错误:

                                  在此输入图像描述

  • 如果你在IntelliJ中使用Python插件,这也有效. (15认同)
  • 此解决方案有效.问题是,当另一个程序员从svn检索代码时,她必须再次进行相同的设置以摆脱"未解决的引用"错误提示. (10认同)
  • 该死的,我只想将这个答案标记为救星! (3认同)
  • @GamesBrainiac,解决方案是IDE可以解析"sys.path.insert(0,"./ src")"将其添加到PYTHONPATH中以获取此特定文件,然后进行正确的语法分析. (2认同)
  • 您还需要确保内容根路径正确无误.在pycharm 5中,您可以在首选项 - >项目 - >项目结构中找到它. (2认同)

Ukr*_*Ukr 40

  1. 检查__init__.py文件src夹中的文件
  2. 将该src文件夹添加为源根目录
  3. 然后确保添加添加源PYTHONPATH(见上文)
  4. 在PyCharm菜单中选择:File - > Invalidate Caches/Restart

  • 最后一步是我的解决方案中唯一缺少的.接受的答案可能会增加它. (7认同)

Aer*_*Hil 19

如果有人还在看这个,那么当我尝试时,接受的答案仍适用于PyCharm 2016.3.用户界面可能已更改,但选项仍然相同.

即.右键单击根文件夹 - >'将目录标记为' - >源根

  • 在这个讨论中有这么多复杂的答案。这里介绍的解决方案对我来说很容易。 (3认同)

meh*_*hdi 16

在测试了所有变通方法之后,我建议你看看Settings -> Project -> project dependencies并重新安排它们.

pycharm prefrence


pro*_*eek 15

通常,$ PYTHONPATH用于教python解释器以查找必要的模块.PyCharm需要在Preference中添加路径.

在此输入图像描述


Ous*_*uss 9

发生这种情况的原因有多种。以下是修复大多数此类情况的几个步骤:

.idea缓存问题

某些.idea问题导致 IDE 显示错误,但代码仍然正确运行。解决方案:

  1. 关闭项目并快速使用 PyCharm
  2. 删除.idea项目所在的文件夹。请注意,它是一个隐藏文件夹,您可能不知道它存在于项目目录中。
  3. 启动 PyCharm 并重新创建项目

相对于项目文件夹导入

相对导入,而代码根文件夹与项目文件夹不同。解决方案:

  1. 在项目资源管理器中找到相对导入所需的文件夹
  2. 右键单击并将其标记为“源根目录”

编辑器未将init .py 标记为 Python,而是标记为 Text

这是所有案例中最虚幻的一个。这里,由于某种原因,PyCharm 认为所有__init__.py文件都不是 python 文件,因此在代码分析期间忽略它们。要解决此问题:

  1. 打开 PyCharm 设置
  2. 导航到编辑器 -> 文件类型
  3. 找到Python并添加到__init__.pyPython文件列表中

或者

  1. 查找文本并__init__.py从文本文件列表中删除


bom*_*ben 7

我克隆的项目有一个名为 的目录modules,并成功使用代码中的文件import this as that,但 Pycharm 无法跳转到这些代码片段,因为它无法识别导入。

在以下设置部分中将模块文件夹标记source为已解决问题。

Pycharm 首选项


小智 6

尽管所有答案都非常有帮助,但有一小部分信息应该明确解释:

  • 本质上,具有多个分层目录的项目作为具有某些属性的包运行。
  • 要导入自定义本地创建的类,我们需要导航到包含.py文件的目录并在那里创建一个__init__.py(空)文件。

为什么这有帮助是因为需要这个文件才能使 Python 将目录视为包含包。干杯!


Ch_*_*h_y 5

通常,这是一个缺失的包问题,只需将插入符号放在未解析的引用上并按下Alt+Enter以显示选项,然后您应该知道如何解决它.