我有一个目录结构
├── 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
__init__.py
文件?
手动添加它是确实是这样做的一种方法,但有一个更简单的方法,那就是简单地告诉 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
检查 src 文件夹中的 __init__.py 文件 添加 src 文件夹作为源根目录 然后确保将源添加到 PyCharm 菜单中的 PYTHONPATH(见上文)选择:文件 --> 使缓存无效 --> 重新启动
pip install -e .
)安装,此答案将如何变化?
PYTHONPATH
是空的,这正常吗?
如果有人还在看这个,那么当我尝试它时,接受的答案仍然适用于 PyCharm 2016.3。 UI 可能已更改,但选项仍然相同。
IE。右键单击您的根文件夹 --> 'Mark Directory As' --> 源根目录
src
?
PYTHONPATH
是空的,这正常吗?
在测试了所有解决方法后,我建议您查看 Settings -> Project -> project dependencies
并重新安排它们。
https://i.stack.imgur.com/cmUdP.png
pygame
并且没有更多未解决的参考问题!
通常,$PYTHONPATH is used to teach python interpreter to find necessary modules。 PyCharm 需要在 Preference 中添加路径。
https://i.stack.imgur.com/VHhw9.png
PYTHONPATH
是空的。我不确定为什么它本身没有正确设置。顺便说一句,您分享的链接无效。
PYTHONPATH
是空的,这正常吗?
发生这种情况有几个原因。以下是解决大多数情况的几个步骤:
.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
文件夹?
rm -rf .idea
。然后重新启动pycharm。我真的很困惑为什么这有效......到目前为止。至少 ide 正在查找文件并且代码的运行也是如此(但即使从 pycharm 中运行,例如使用调试器,它也始终有效)。
我克隆的项目有一个名为 modules
的目录,并且在 import this as that
的代码中成功使用了该目录中的文件,但 Pycharm 无法跳转到这些代码片段,因为它无法识别导入。
将以下设置部分中的模块文件夹标记为 source
解决了该问题。
https://i.stack.imgur.com/Bfbry.png
通常,这是一个缺少包的问题,只需将插入符号放在未解析的引用处并按 Alt+Enter
以显示选项,然后您应该知道如何解决它。
尽管所有答案都非常有帮助,但仍有一小部分信息需要明确解释:
本质上,具有多个分层目录的项目作为具有某些属性的包工作。
要导入自定义本地创建的类,我们需要导航到包含 .py 文件的目录并在那里创建一个 __init__.py (空)文件。
为什么这会有所帮助,因为需要此文件才能使 Python 将目录视为包含包。干杯!
通过 PyCharm 安装(与社区版一起使用)。打开 Settings > Project > Project Interpreter
,然后点击下面屏幕截图中的绿色 + 图标。在打开的第二个对话框中,输入包名称并单击“安装包”按钮。
https://i.stack.imgur.com/roe5T.png
遵循接受的答案后,执行以下操作为我解决了这个问题:
File
→ Settings
→ Project <your directory/project>
→ Project Dependencies
选择具有未解析导入的文件所在的目录/项目,并选中该框以告诉 Pycharm 该项目依赖于您的其他项目。
我的文件夹层次结构与问题中的文件夹层次结构略有不同。我的是这样的
├── MyDirectory
│ └── simulate.py
├── src
│ ├── networkAlgorithm.py
│ ├── ...
告诉 Pycharm src 依赖于 MyDirectory
为我解决了这个问题!
这对我有用:Top Menu -> File -> Invalidate Caches/Restart
--> 右键单击 PyCharm 中文件所在的目录 转到 --> Mark Directory as 选择 --> Source Root
你的问题将得到解决
很多时候发生的是插件没有安装。例如
如果您正在开发一个 django 项目并且您没有在 pyCharm 中安装 django 插件,它会显示错误“未解析的引用”。参考:https://www.jetbrains.com/pycharm/help/resolving-references.html
我也使用了像上面 Dan 这样的虚拟环境,但是我能够在现有环境中添加解释器,因此不需要继承全局站点包,因此不需要撤消虚拟环境试图实现的功能。
请检查您是否使用了正确的口译员。我收到错误“未解析的引用'django'”来解决这个问题我从项目设置中更改了项目解释器(将Python 3更改为Python 2.7):选择项目,转到文件->设置->项目:->项目解释器->浏览并选择正确的版本或解释器(例如 /usr/bin/python2.7)。
就我而言,问题是我使用的 Virtual environment
无权访问全局站点包。因此,解释器不知道新安装的软件包。
要解决此问题,只需编辑或重新创建您的虚拟解释器并勾选 Inherit global site-packages
选项。
https://i.stack.imgur.com/QLoI0.png
在 PyCharm 2019.3.1 中完成 右键单击您的 src 文件夹->“将目录标记为”-> 单击“已排除”,您的 src 文件夹应该是蓝色的。
对于我的情况:
Directory0
├── Directory1
│ └── file1.py
├── Directory2
│ ├── file2.py
进入file1,我有:
from Directory2 import file2
这会引发“未解析的参考 Directory2”。
我通过以下方式解决了它:
如上所述将父目录 Directory0 标记为“源根”
和
将光标放在出现错误的文件的另一行上,以便将我的修改考虑在内
这很愚蠢,但如果我不执行第二个操作,错误仍然会出现,并且可以让您认为您没有通过将父目录标记为 Source Root 来解决问题。
对我来说,将 virtualenv (venv
) 的站点包路径添加到解释器的路径中是可行的。最后!
https://i.stack.imgur.com/ZmJpC.png
我在这里尝试了两次甚至更多。我终于解决了它,做了一些我在网上从未见过的事情。如果您转到 Settings>Editor>File Types
,则底部有一条 'Ignore Files and folders
' 行。在我的例子中,我忽略了 'venv'
,这是我一直为我的虚拟环境命名的。所以我从要忽略的目录列表中删除了 venv;
,瞧!我终于能够解决这个问题。从字面上看,我的所有导入问题都已针对该项目进行了修复。
顺便说一句,我已经使用 PyCharm 安装了每个包,而不是通过终端。 (意思是,转到 Settings>Interpreter...
)。我已经使缓存无效,更改了“源根”,重新启动 PyCharm,刷新了我的解释器路径,更改了解释器,删除了我的 venv ......我尝试了一切。这终于奏效了。显然,不同的人在这里会遇到多个问题,所以这可能对你不起作用,但如果没有其他方法起作用,它绝对值得一试,如果不起作用,也很容易扭转。
我遇到了同样的问题,也尝试了很多建议,但没有一个奏效,直到我找到这篇文章 (https://stackoverflow.com/a/62632870/16863617)。尽管他的解决方案对我不起作用,但它帮助我想出了将 _init.py_ 添加到 --> 中的想法。 设置 |编辑 |文件类型 |蟒蛇 |注册模式
现在解决了未解决的参考错误。
请注意,如果您遇到 python 解释器未安装软件包的问题,只需将文件夹 PycharmProjects C:\Users'username'\PycharmProjects 的权限更改为每个
Pycharm 使用 venv。在 venv 的控制台中,您应该显式安装软件包或进入 settings -> project interpreter -> add interpreter -> inherit global site-packages
。
修复它的最简单方法是在 pyCharm 软件中执行以下操作:
点击:文件>设置>(项目:你的项目名称)>项目解释器>
然后单击右侧的“+”图标搜索您想要的软件包并安装它。
享受编码!
在较新版本的 pycharm 中,您只需右键单击要从中导入文件的目录或 python 包,然后单击“将目录标记为”->“源根”即可