PyCharm中未解决的引用问题

我有一个目录结构

├── simulate.py
├── src
│   ├── networkAlgorithm.py
│   ├── ...

并且我可以使用sys.path.insert()访问网络模块。

import sys
import os.path
sys.path.insert(0, "./src")
from networkAlgorithm import *

但是,pycharm抱怨它无法访问该模块。我如何教pycham解决引用?

enter image description here

554774 次浏览

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

enter image description here

手动添加它,就像你做那样,确实是一种方法,但有一个更简单的方法,那就是简单地告诉pycharm,你想添加src文件夹作为源根,然后将源根添加到你的python路径中。

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

  • 添加src作为源内容根:
< p >                            enter image description here

  • 然后确保添加add sources到你的PYTHONPATH下面:

    Preferences ~ Build, Execution, Deployment ~ Console ~ Python Console
    

enter image description here

  • 现在进口问题将得到解决:
< p >                      enter image description here

通过这种方式,您可以添加任何您想要的源根,并且事情将简单地工作。但是,如果你未将它标记为源根,你会得到一个错误:

< p >                                  enter image description here

完成所有这些后,不要忘记重新启动。在PyCharm菜单中选择:文件>使缓存失效/重新启动

很多时候发生的事情是插件没有安装。如。

如果你正在开发一个django项目,并且pyCharm中没有安装django插件,它会显示错误'unresolved reference'。 参考: https://www.jetbrains.com/pycharm/help/resolving-references.html < / p >

请检查您是否使用了正确的解释器。我得到错误“未解决的引用'django'”来解决这个问题,我从项目设置中更改了项目解释器(更改Python 3到Python 2.7): 选择项目,进入文件->设置->项目:->项目解释器->眉毛并选择正确的版本或解释器(例如/usr/bin/python2.7)

在测试完所有的变通方法后,我建议你看一下Settings -> Project -> project dependencies并重新排列它们。

pycharm preference

  1. 检查src文件夹中的__init__.py文件
  2. 添加src文件夹作为源根
  3. 然后确保将源代码添加到PYTHONPATH(见上文)
  4. 在PyCharm菜单中选择文件>使缓存无效——>重新启动

一般来说,这是一个缺少包的问题,只需在未解决的引用处放置插入号,并按Alt+Enter显示选项,然后你应该知道如何解决它。

如果有人还在看这个问题,当我尝试它时,接受的答案仍然适用于PyCharm 2016.3。UI可能已经更改,但选项仍然相同。

ie。右键单击根文件夹——>“标记目录为”——>源根

Pycharm使用venv。在venv的控制台中,你应该显式地安装包或进入settings -> project interpreter -> add interpreter -> inherit global site-packages

通过PyCharm安装(适用于社区版)。打开Settings > Project > Project Interpreter,然后点击下面截图中的绿色+图标。在打开的第二个对话框中,输入软件包名称并单击“Install package”按钮。

enter image description here

在遵循公认的答案后,做以下的事情为我解决了这个问题:

__abc0→__abc1→__abc2→__abc3

选择未解决导入的文件所在的目录/项目,并选中复选框,告诉Pycharm该项目依赖于您的其他项目。

我的文件夹层次结构与问题中的略有不同。我的是这样的

├── MyDirectory
│     └── simulate.py
├── src
│     ├── networkAlgorithm.py
│     ├── ...

告诉Pycharm src依赖于MyDirectory解决了我的问题!

在我的情况下,问题是我使用的Virtual environment没有访问全局站点包。因此,解释器不知道新安装的包。

要解决这个问题,只需编辑或重新创建虚拟解释器,并勾选Inherit global site-packages选项。

enter image description here

这对我有用:Top Menu -> File -> Invalidate Caches/Restart

在新版本的pycharm中,只需右键单击想要导入文件的目录或python包,然后单击“标记目录为”->“源根”

最简单的解决方法是在pyCharm软件中执行以下操作:

点击:File > Settings > (Project: your Project name) > Project Interpreter >

然后点击右边的“+”图标,搜索你想要的软件包并安装它。

享受编码吧!!

虽然所有的答案都很有帮助,但有一小部分信息应该明确解释:

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

这之所以有用,是因为需要这个文件才能使Python将该目录视为包含包的目录。干杯!

完成在PyCharm 2019.3.1 右键单击src文件夹->“标记目录为”->单击“排除”,您的src文件夹应该是蓝色的。

对我来说,将virtualenv (venv)的site-packages路径添加到解释器的路径中是有效的。 终于!< / p >

enter image description here

这里所有的东西我都试过两次,甚至更多。我最终解决了这个问题,做了一些我在网上从未见过的事情。如果你去Settings>Editor>File Types,在底部有一个'Ignore Files and folders'行。在我的情况下,我忽略了'venv',这是我总是命名我的虚拟环境。所以我从要忽略的目录列表中删除了venv;,瞧!!我终于解决了这个问题。实际上,我在这个项目中遇到的所有导入问题都得到了解决。

顺便说一句,我使用PyCharm安装了每个包,而不是通过终端安装的。(意思是,通过去Settings>Interpreter...)。我已经使缓存无效,更改“源根”,重新启动PyCharm,刷新我的解释器路径,更改解释器,删除我的venv…我什么都试过了。这终于奏效了。显然,不同的人会有不同的问题,所以这个方法可能对你不起作用,但如果其他方法都不起作用,这绝对值得一试,如果不起作用,也很容易逆转。

  1. ——比;右键单击PyCharm中文件所在的目录
  2. 去——>将目录标记为
  3. 选择——>源根

你的问题会解决的

我也使用了像上面Dan那样的虚拟环境,但是我能够在现有的环境中添加一个解释器,因此不需要继承全局站点包,从而撤销虚拟环境试图实现的目标。

对于我来说:

Directory0
├── Directory1
│     └── file1.py
├── Directory2
│     ├── file2.py

在file1中,我有:

from Directory2 import file2

上面有一个“未解决的参考目录”。

我是这样解决的:

  • 将父目录Directory0标记为“Source root”;如上所述

  • 把我的光标放在我有错误的文件上的另一行,这样它就会考虑到我的修改

这很愚蠢,但如果我不执行第二个操作,错误仍然会出现,并可能使您认为您没有通过将父目录标记为Source Root来解决问题。

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

.idea缓存问题

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

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

导入相对于项目文件夹

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

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

编辑器没有标记init.py作为Python,但作为文本

这是所有案例中最令人难以置信的。在这里,出于某种原因,PyCharm认为所有__init__.py文件都不是python文件,因此在代码分析时忽略了它们。要解决这个问题:

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

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

我也有同样的问题,也尝试了很多建议,但没有一个有效,直到我发现这篇文章(https://stackoverflow.com/a/62632870/16863617)。尽管他的解决方案对我不起作用,但它帮助我想出了将_ < em > init.py < / em >_添加到——>|编辑器|文件类型| Python |注册模式

截图 .

未解决的引用错误现在已经解决。

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

标记模块文件夹在下面的设置部分作为source解决了这个问题。

Pycharm Preferences

只是注意如果你有python解释器不安装的问题 包,只需更改文件夹PycharmProjects的权限 C: \用户'username \ PycharmProjects 每一个人 < / p >

如果在Python文件名中使用破折号,也会出现此问题,因此强烈不建议这样做。

我在安装aigram时遇到了一个导入问题。与此同时,机器人工作了,但pyCharm用红色突出显示导入,并且没有给出提示。以上这些方法我都试过很多次了。结果,以下内容帮助了我:我在以下路径下找到了aiogram文件夹 Python c…\ AppData \ \用户漫游\ \ Python310 \网站 然后复制到文件夹里 C:\Program Files\Python310\Lib\网站 在那之后,我重置pyCharm,就是这样!< / p >

在我的例子中,使用Pycharm 2019.3,问题是我忘记向我想导入的文件添加扩展名“.py”。一旦添加,错误就会消失,而不需要使缓存无效或任何其他步骤。