PyCharm中未解决的参考问题

时间:2014-01-20 14:44:29

标签: python ide 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

23 个答案:

答案 0 :(得分:663)

手动添加它 实际上只是一种方法,但是有一个更简单的方法,那就是告诉pycharm你要添加src将文件夹作为源根目录,然后将源根目录添加到python路径。

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

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

enter image description here

  • 然后确保将添加来源添加到PYTHONPATH

enter image description here

  • 现在将解决导入:

enter image description here

这样,你可以添加你想要的任何东西作为源根,事情就会起作用。但是,如果您将其取消标记为源根,则收到错误:

enter image description here

答案 1 :(得分:34)

  1. 检查__init__.py文件夹
  2. 中的src文件
  3. src文件夹添加为源根
  4. 然后确保在PYTHONPATH(见上文)
  5. 中添加添加来源
  6. 在PyCharm菜单中选择:文件 - >使缓存无效/重新启动

答案 2 :(得分:15)

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

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

答案 3 :(得分:14)

通常$PYTHONPATH is used to teach python interpreter to find necessary modules。 PyCharm需要在Preference中添加路径。

enter image description here

答案 4 :(得分:14)

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

pycharm prefrence

答案 5 :(得分:5)

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

答案 6 :(得分:3)

按照接受的答案后,执行以下操作为我解决了问题:

FileSettingsProject <your directory/project>Project Dependencies

选择具有未解析导入的文件所在的目录/项目,并选中该框以告诉Pycharm该项目取决于您的其他项目。

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

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

告诉我们src取决于MyDirectory的Pycharm为我解决了这个问题!

答案 7 :(得分:2)

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

enter image description here

答案 8 :(得分:2)

尽管所有答案确实有帮助,但其中的一小部分信息应予以明确解释:

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

之所以有所帮助,是因为要使Python将目录视为包含软件包,必须使用此文件。干杯!

答案 9 :(得分:1)

请检查您是否使用了正确的口译员。我收到错误&#34;未解决的参考&#39; django&#39; &#34;为了解决这个问题,我从项目设置中更改了Project Interpreter(将Python 3更改为Python 2.7): 选择Project,转到File - &gt;设置 - &gt;项目: - &gt;项目口译员 - &gt;浏览并选择正确的版本或解释器(例如/usr/bin/python2.7)。

答案 10 :(得分:1)

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

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

答案 11 :(得分:1)

我还使用了像上面的Dan这样的虚拟环境,但是我能够在现有环境中添加解释器,因此不需要继承全局站点包,因此可以撤消虚拟环境试图实现的目标。

答案 12 :(得分:1)

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

答案 13 :(得分:0)

发生这种情况的原因有多种。以下是解决大多数情况的几个步骤:

.idea 缓存问题

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

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

相对于项目文件夹导入

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

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

编辑器没有将 init.py 标记为 Python 而是文本

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

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

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

答案 14 :(得分:0)

就我而言:

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

进入file1,我有:

from Directory2 import file2

其中包含“未解析的参考 Directory2”。

我通过以下方式解决了:

  • 将父目录 Directory0 标记为“源根目录”,如上所述

AND

  • 将光标放在我出错的文件的另一行上,以便将我的修改考虑在内

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

答案 15 :(得分:0)

  1. ->右键单击PyCharm中文件所在的目录
  2. 转到->将目录标记为
  3. 选择->源根目录

您的问题将得到解决

答案 16 :(得分:0)

我在这里尝试了两次,甚至更多。我终于解决了它,实现了网上从未见过的东西。如果您转到Settings>Editor>File Types,则在底部有一个'Ignore Files and folders'行。就我而言,我一直忽略'venv',这就是我一直命名的虚拟环境。因此,我从目录列表中删除了venv;,以忽略它并忽略它!我终于能够解决这个问题。从字面上看,我所有的进口问题都已为该项目解决。

顺便说一句,我已经使用PyCharm而不是通过终端安装了每个软件包。 (意味着,转到Settings>Interpreter...)。我已经使缓存无效,更改了“源根目录”,重新启动了PyCharm,刷新了我的解释器路径,更改了解释器,删除了我的静脉...我尝试了一切。终于成功了。显然,不同的人在这里遇到多个问题,因此这可能对您不起作用,但是如果没有其他方法起作用,那么绝对值得一试,如果没有其他方法,则很容易解决。

答案 17 :(得分:0)

对我来说,将virtualenv(venv)的站点程序包路径添加到解释器的路径有效。 终于!

enter image description here

答案 18 :(得分:0)

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

单击:文件>设置>(项目:您的项目名称)>项目解释器>

然后单击右侧的“ +”图标以搜索所需的软件包并安装。

享受编码!!!

答案 19 :(得分:0)

这对我有用:sum(if(DELAY_IN_MILLIS = 0, VALUE, 0)), sum(if(DELAY_IN_MILLIS = 100, VALUE, 0)), ...

答案 20 :(得分:0)

在我的情况下,问题是我使用的是Virtual environment,但无法访问全局站点程序包。因此,解释器不知道新安装的软件包。

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

enter image description here

答案 21 :(得分:0)

Pycharm使用venv。在venv的控制台中,您应该明确安装软件包或进入settings -> project interpreter -> add interpreter -> inherit global site-packages

答案 22 :(得分:-2)

在较新版本的pycharm中,您可以简单地执行以下操作:右键单击要从中导入文件的目录或python包,然后单击“将目录标记为”->“源根目录”