PyCharm 从其他文件导入 class 时未解析的引用
PyCharm unresolved reference when importing class from other file
这个问题一直让我抓狂。我正在尝试从同一目录中的文件导入 class。 PyCharm 给我 "Unresolved reference" 错误。 MyClass
定义在 file.py
.
我发现了这些问题:
- Unresolved reference issue in PyCharm
- Pycharm: "unresolved reference" error on the IDE when opening a working project
- PyCharm shows unresolved references error for valid code
- Unresolved reference when importing from sibling sub-package with
我有以下项目结构:
我已将 src 标记为源根...
我设置了"Add source roots to PYTHONPATH":
我试过文件 -> 使缓存无效/重新启动..(我什至重新启动了计算机)。
如果我尝试 运行 它,我会在控制台中收到以下错误:ImportError: cannot import name 'MyClass'
解释器是 Python 3.4 上 Ubuntu x64 14.04 上的 virtualenv。
如果我安装并导入任何第 3 方软件包,它们都可以正常工作。
如果我在终端中尝试 echo $PYTHONPATH
它 returns 什么都没有(与 env | grep PYTHONPATH
相同)。当我尝试这些时,我激活了适当的 virtualenv。
有什么线索吗?
如果在pack/file.py
中定义了MyClass
,则需要将其导入为:
from pack.file import MyClass
请注意,为您自己的模块使用 Python 内置类型的名称(例如 file
)不是一个好主意。
如果您使用的是 python 版本 3,试试这个
from .pack import myclass
这对我有用
是的,如果您使用的是 python 3,您应该添加如下内容:
from .pack import MyClass
它会起作用
以下步骤解决了我的问题:
- 所有目录至少需要一个空白__init__.py文件
- 将所有目录标记为源根目录(根据之前的海报说明)
我在尝试导入新的 class 时遇到了同样的问题,但是我可以从同一目录中的文件成功导入函数。我仍然不明白为什么我不能导入我的 class 但我想我会为其他用户分享信息。
@kaylebs 的回复对我有用。但是我随后将 src 目录添加到源目录列表中,首先是@lulian 's question and could remove the ' 中的 link。'来自我的文件名。
发生这种情况的原因有多种。以下是修复大多数情况的几个步骤:
.idea 缓存问题
一些 .idea
问题导致 IDE 在代码仍然正确运行时显示错误。解决方案:
- 关闭项目并快速PyCharm
- 删除项目所在的
.idea
文件夹。请注意,它是一个隐藏文件夹,您可能不知道它在您的项目目录中的存在。
- 启动 PyCharm 并重新创建项目
导入相对项目文件夹
相对导入,而代码根文件夹与项目文件夹不同。解决方案:
- 在项目资源管理器中找到相对导入需要的文件夹
- 右键单击并将其标记为“Source Root”
编辑器未将 init.py 标记为 Python
这是所有案例中最虚幻的一个。这里,出于某种原因,PyCharm 认为所有 __init__.py
文件都不是 python 文件,因此在代码分析期间忽略它们。要解决此问题:
- 打开PyCharm设置
- 导航到编辑器 -> 文件类型
- 查找 Python 并将
__init__.py
添加到 python 文件列表或查找文本并从文本文件列表中删除 __init__.py
我只是删除了复制的代码并删除了文件,然后再次创建相同的文件,到时候就可以了
这个问题一直让我抓狂。我正在尝试从同一目录中的文件导入 class。 PyCharm 给我 "Unresolved reference" 错误。 MyClass
定义在 file.py
.
我发现了这些问题:
- Unresolved reference issue in PyCharm
- Pycharm: "unresolved reference" error on the IDE when opening a working project
- PyCharm shows unresolved references error for valid code
- Unresolved reference when importing from sibling sub-package with
我有以下项目结构:
我已将 src 标记为源根...
我设置了"Add source roots to PYTHONPATH":
我试过文件 -> 使缓存无效/重新启动..(我什至重新启动了计算机)。
如果我尝试 运行 它,我会在控制台中收到以下错误:ImportError: cannot import name 'MyClass'
解释器是 Python 3.4 上 Ubuntu x64 14.04 上的 virtualenv。
如果我安装并导入任何第 3 方软件包,它们都可以正常工作。
如果我在终端中尝试 echo $PYTHONPATH
它 returns 什么都没有(与 env | grep PYTHONPATH
相同)。当我尝试这些时,我激活了适当的 virtualenv。
有什么线索吗?
如果在pack/file.py
中定义了MyClass
,则需要将其导入为:
from pack.file import MyClass
请注意,为您自己的模块使用 Python 内置类型的名称(例如 file
)不是一个好主意。
如果您使用的是 python 版本 3,试试这个
from .pack import myclass
这对我有用
是的,如果您使用的是 python 3,您应该添加如下内容:
from .pack import MyClass
它会起作用
以下步骤解决了我的问题:
- 所有目录至少需要一个空白__init__.py文件
- 将所有目录标记为源根目录(根据之前的海报说明)
我在尝试导入新的 class 时遇到了同样的问题,但是我可以从同一目录中的文件成功导入函数。我仍然不明白为什么我不能导入我的 class 但我想我会为其他用户分享信息。
@kaylebs 的回复对我有用。但是我随后将 src 目录添加到源目录列表中,首先是@lulian 's question and could remove the ' 中的 link。'来自我的文件名。
发生这种情况的原因有多种。以下是修复大多数情况的几个步骤:
.idea 缓存问题
一些 .idea
问题导致 IDE 在代码仍然正确运行时显示错误。解决方案:
- 关闭项目并快速PyCharm
- 删除项目所在的
.idea
文件夹。请注意,它是一个隐藏文件夹,您可能不知道它在您的项目目录中的存在。 - 启动 PyCharm 并重新创建项目
导入相对项目文件夹
相对导入,而代码根文件夹与项目文件夹不同。解决方案:
- 在项目资源管理器中找到相对导入需要的文件夹
- 右键单击并将其标记为“Source Root”
编辑器未将 init.py 标记为 Python
这是所有案例中最虚幻的一个。这里,出于某种原因,PyCharm 认为所有 __init__.py
文件都不是 python 文件,因此在代码分析期间忽略它们。要解决此问题:
- 打开PyCharm设置
- 导航到编辑器 -> 文件类型
- 查找 Python 并将
__init__.py
添加到 python 文件列表或查找文本并从文本文件列表中删除__init__.py
我只是删除了复制的代码并删除了文件,然后再次创建相同的文件,到时候就可以了