ChatGPT解决这个技术问题 Extra ChatGPT

PyCharm 中未解决的参考问题

我有一个目录结构

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

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

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

但是,pycharm 抱怨它无法访问该模块。我怎样才能教 pycham 解决参考?

https://i.stack.imgur.com/VwqcZ.png

src 文件夹是否有 __init__.py 文件?
@Puffin GDI:不,不是。
@PuffinGDI src 文件夹需要这个 init.py 文件吗?
是的,以便 python 识别包:stackoverflow.com/questions/42094723/…
我重命名了类名并继续处理它。当我点击运行时,出现了这个错误,完全忘记了重命名并尝试在导入过程中寻找 pycharm 建议。该死,建议是区分大小写的! - 蟒蛇新手!!

A
Alan W. Smith

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

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

添加 src 作为源内容根:

https://i.stack.imgur.com/9WunC.png

然后确保将添加源添加到您的 PYTHONPATH 下:Preferences ~ Build, Execution, Deployment ~ Console ~ Python Console

https://i.stack.imgur.com/rk59O.png

现在将解决导入问题:

https://i.stack.imgur.com/4Z6RD.png

这样,您可以添加任何您想要的源根目录,一切都会简单地工作。但是,如果您将其取消标记为源根目录,则会收到错误消息:

https://i.stack.imgur.com/vMII4.png

毕竟这不要忘记重新启动。在 PyCharm 菜单中选择:File --> Invalidate Caches / Restart


如果您将 Python 插件与 IntelliJ 一起使用,这也适用。
此解决方案有效。它的问题是当另一个程序员从 svn 中检索代码时,她必须再次进行相同的设置以摆脱“未解析的引用”错误提示。
@GamesBrainiac,解决方案是IDE可以解析 "sys.path.insert(0, "./src")" 将其添加到此特定文件的 PYTHONPATH 中,然后进行适当的语法分析。
您还需要确保您的内容根路径是正确的。在 pycharm 5 中,您可以在 Preferences -> Project -> Project Structure 中找到它。
该死的,我只想将此答案标记为救生员!
a
amin arghavani

检查 src 文件夹中的 __init__.py 文件 添加 src 文件夹作为源根目录 然后确保将源添加到 PyCharm 菜单中的 PYTHONPATH(见上文)选择:文件 --> 使缓存无效 --> 重新启动


这最后一步是我的解决方案中唯一缺少的。接受的答案可能会添加到它。
如果没有此处提到的最后一步,则接受的答案不起作用。接受的答案也应添加此步骤/
如果我的库以可编辑模式(例如 pip install -e .)安装,此答案将如何变化?
我的 PYTHONPATH 是空的,这正常吗?
A
AeroHil

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

IE。右键单击您的根文件夹 --> 'Mark Directory As' --> 源根目录


这个讨论中有这么多复杂的答案。这里提出的解决方案对我来说很容易。
“根文件夹”对您意味着什么?像 github repo 的根目录或包根目录,例如 src
我的 PYTHONPATH 是空的,这正常吗?
谢谢。这就像一个“魅力”双关语:)
m
mehdi

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

https://i.stack.imgur.com/cmUdP.png


这对我来说非常有效。我在那里安装了 pygame 并且没有更多未解决的参考问题!
我应该如何重新安排它们?
p
prosseek

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

https://i.stack.imgur.com/VHhw9.png


如何检查我的 python 路径是否设置正确?目前,我的 PYTHONPATH 是空的。我不确定为什么它本身没有正确设置。顺便说一句,您分享的链接无效。
我在 2021.3 版本中看不到你的图片显示的 python 路径框...
我的 PYTHONPATH 是空的,这正常吗?
O
Ouss

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

.idea 缓存问题

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

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

相对于项目文件夹的导入

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

在项目资源管理器中找到相对导入需要的文件夹,右键标记为“Source Root”

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

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

打开 PyCharm 设置 Navigate to Editor -> File Types Find Python and add __init__.py to the list of python files

或者

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


如何找到 .idea 文件夹?
回答我自己的问题,我去了我的项目的根目录(不是 src,而是说 git repo 根文件夹)。然后我做了rm -rf .idea。然后重新启动pycharm。我真的很困惑为什么这有效......到目前为止。至少 ide 正在查找文件并且代码的运行也是如此(但即使从 pycharm 中运行,例如使用调试器,它也始终有效)。
为什么这行得通?
顺便说一句,重新创建项目真的有必要吗?
在该文件夹中启动 PyCharm 时会自动重新创建项目。这将重新创建存储项目设置、字符串搜索索引和其他内容的 .idea 文件夹。
b
bomben

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

将以下设置部分中的模块文件夹标记source 解决了该问题。

https://i.stack.imgur.com/Bfbry.png


C
Ch_y

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


mac alt+enter 是什么?
W
Waqas Kayani

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

本质上,具有多个分层目录的项目作为具有某些属性的包工作。

要导入自定义本地创建的类,我们需要导航到包含 .py 文件的目录并在那里创建一个 __init__.py (空)文件。

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


d
danday74

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

https://i.stack.imgur.com/roe5T.png


N
Neuron

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

FileSettingsProject <your directory/project>Project Dependencies

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

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

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

告诉 Pycharm src 依赖于 MyDirectory 为我解决了这个问题!


G
Gershon Herczeg

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


佚名

--> 右键单击 PyCharm 中文件所在的目录 转到 --> Mark Directory as 选择 --> Source Root

你的问题将得到解决


R
Ranjeet

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

如果您正在开发一个 django 项目并且您没有在 pyCharm 中安装 django 插件,它会显示错误“未解析的引用”。参考:https://www.jetbrains.com/pycharm/help/resolving-references.html


必须将这个 + 接受的答案(stackoverflow.com/a/21241988/6448384)结合起来。
T
Tabs

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


k
kishs1991

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


D
Dan

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

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

https://i.stack.imgur.com/QLoI0.png


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

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


P
Pozinux

对于我的情况:

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

进入file1,我有:

from Directory2 import file2

这会引发“未解析的参考 Directory2”。

我通过以下方式解决了它:

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

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

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


我刚刚添加了父文件夹,即 Directory0(在这种情况下),这对我有用,在这个问题上已经苦苦挣扎了好几天,非常感谢
w
weaming

对我来说,将 virtualenv (venv) 的站点包路径添加到解释器的路径中是可行的。最后!

https://i.stack.imgur.com/ZmJpC.png


u
user2233949

我在这里尝试了两次甚至更多。我终于解决了它,做了一些我在网上从未见过的事情。如果您转到 Settings>Editor>File Types,则底部有一条 'Ignore Files and folders' 行。在我的例子中,我忽略了 'venv',这是我一直为我的虚拟环境命名的。所以我从要忽略的目录列表中删除了 venv;,瞧!我终于能够解决这个问题。从字面上看,我的所有导入问题都已针对该项目进行了修复。

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


J
Javier Díaz

我遇到了同样的问题,也尝试了很多建议,但没有一个奏效,直到我找到这篇文章 (https://stackoverflow.com/a/62632870/16863617)。尽管他的解决方案对我不起作用,但它帮助我想出了将 _init.py_ 添加到 --> 中的想法。 设置 |编辑 |文件类型 |蟒蛇 |注册模式

ScreenShot

现在解决了未解决的参考错误。


T
Thaer Shabo

请注意,如果您遇到 python 解释器未安装软件包的问题,只需将文件夹 PycharmProjects C:\Users'username'\PycharmProjects 的权限更改为每个


您的答案可以通过额外的支持信息得到改进。请edit添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。您可以找到有关如何写出好答案的更多信息in the help center
F
Félix Adriyel Gagnon-Grenier

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


z
zaid.mohammed

修复它的最简单方法是在 pyCharm 软件中执行以下操作:

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

然后单击右侧的“+”图标搜索您想要的软件包并安装它。

享受编码!


欢迎来到 Stack Overflow,感谢您的回答。虽然这可能是正确的,但将来请避免在没有上下文或更多详细信息的情况下发布图片或指向其他网站的链接。该链接可能会在某个时候停止工作,从而使此答案对其他用户的用处不大。
@CyberJacob 非常感谢,也非常感谢您的建议,我已经通过删除图像并添加文本来编辑答案。
S
Shravan Kumar

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