PyCharm中未解决的参考问题


373

我有一个目录结构

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

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

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

但是,pycharm抱怨它无法访问该模块。我如何教pycham解析参考文献?

在此处输入图片说明


4
src文件夹中有__init__.py文件吗?
Puffin GDI 2014年

@Puffin GDI:不,不是。
prosseek 2014年

5
@PuffinGDI src文件夹需要此init .py文件吗?
Jack Chi

是的,以便python识别软件包:stackoverflow.com/questions/42094723/…–
rnoodle

我重命名了班级名称并继续进行研究。当我运行时,出现此错误,完全忘记了重命名,并尝试在导入期间寻找pycharm建议。该死,建议区分大小写!-python新手!!
Vignesh Paramasivam '19年

Answers:


817

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

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

  • src为源内容根:

                            在此处输入图片说明

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

在此处输入图片说明

  • 现在将解决进口问题:

                      在此处输入图片说明

这样,您可以将任何所需的内容添加为源根,一切将简单地进行。但是,如果未将其标记为源根,则会出现错误:

                                  在此处输入图片说明

毕竟,别忘了重新启动。在PyCharm菜单中,选择:文件->使缓存无效/重新启动


16
如果您将Python插件与IntelliJ一起使用,这也可以使用。
rob mayoff 2014年

13
此解决方案有效。问题在于,当另一个程序员从svn检索代码时,她必须再次进行相同的设置才能摆脱“未解析的引用”错误提示。
Ben Lin

2
@GamesBrainiac,解决方案是IDE可以解析“ sys.path.insert(0,“ ./src”)“,将其添加到此特定文件的PYTHONPATH中,然后进行正确的语法分析。
本林

2
您还需要确保内容根路径正确。在pycharm 5中,您可以在“首选项”->“项目”->“项目结构”中找到它。
2015年

1
奇怪的是,没有考虑子目录。例如,如果在下src,我们有一个views文件夹myview.py,我尝试在其中时仍然收到未解决的引用错误from src.views.myview import <my_function>
SexyBeast

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

11
这最后一步是我的解决方案中唯一缺少的东西。接受的答案可能会添加到它。
aimbire

如果没有此处提到的最后一步,那么接受的答案将不起作用。接受的答案也应该添加此步骤/
santhosh kumar

23

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

即。右键单击您的根文件夹->“标记目录为”->源根


1
在此讨论中有许多复杂的答案。这里介绍的解决方案对我来说是如此轻松。

16

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

pycharm偏好


这对我来说非常合适。我已经安装pygame在那里,没有更多未解决的参考问题!
Michal Przybylowicz


5

通常,这是缺少包装的问题,只需将插入号放在未解决的参考上并按Alt+Enter以显示选项,那么您应该知道如何解决。


4

遵循接受的答案后,请执行以下操作为我解决此问题:

File→交通Settings→交通Project <your directory/project>→交通Project Dependencies

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

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

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

告诉Pycharm src依赖于MyDirectory我,此问题已解决!


4

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

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

之所以有帮助,是因为该文件是使Python将目录视为包含包所必需的。干杯!


3

通过PyCharm安装(与Community Edition一起使用)。打开,Settings > Project > Project Interpreter然后单击下面的屏幕快照中的绿色+图标。在打开的第二个对话框中,输入软件包名称,然后单击“安装软件包”按钮。

在此处输入图片说明



1

请检查您是否使用了正确的解释器。我遇到错误“无法解析的参考'django'”以解决此问题,我从项目设置中更改了项目解释器(将Python 3更改为Python 2.7):选择项目,转到文件->设置->项目:->项目解释器->浏览并选择正确的版本或解释器(例如/usr/bin/python2.7)。


1

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

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

在此处输入图片说明


这是否会产生不良后果并打消使用虚拟环境的理由?也就是说,如果您将该环境带到某个地方,并且已安装了这些全局站点包,那么您将遇到麻烦。我也那么认为。
TheStud54


0

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


-1

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


-1

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


-1

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

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

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

享受编码!


1
欢迎使用Stack Overflow,感谢您的回答。尽管这可能是正确的,但将来请避免发布没有上下文或其他详细信息的图像或指向其他站点的链接。该链接可能会在某些时候停止工作,从而使该答案对其他用户的用处不大。
Cyber​​Jacob

@Cyber​​Jacob非常感谢,也非常感谢您的建议,我通过删除图像并添加文本来编辑答案。
zaid.mohammed
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.