Pycharm:打开一个工作项目时,IDE上出现“未解决的引用”错误

63

简介

我在Git仓库上有一个Python项目。对于大多数团队成员来说,一切都很正常,我们可以在不同平台(Windows、Linux)上使用Pycharm同步代码并进行编辑。

问题

在其中一台计算机上,几乎每个导入都出现“未解决的引用”错误,除了Python的内置库(例如,import datetime 是可以工作的)。这台计算机运行Mac版本的Pycharm。

问题

有人知道如何解决吗?由于大多数导入都无法识别,因此代码完成和导航等功能都无法正常工作。Mac版本中是否存在已知问题?

9个回答

124
关键是将源目录标记为源根目录。请尝试以下操作:
  • 在项目视图中,右键点击Python源代码目录
  • 在对话框菜单中选择标记目录为 > 源根目录

文件夹现在应该呈蓝色而不是米色,表示它是Python源文件夹。

您还可以通过以下方法在PyCharm首选项中进行配置:

  • 在Mac工具栏中,选择PyCharm > 偏好设置
  • 在打开的窗口中,从左侧菜单面板中选择项目结构
  • 在需要的情况下,在中间窗格中选择您的项目
  • 右键单击右窗格中的Python源并从菜单对话框中选择

9
然后重新启动IDE...哎呀,连这个方法都不行。为什么人们不能写一个能用的IDE呢,为什么? - Mr_and_Mrs_D
49
您应该尝试以下步骤:"文件" -> "无效缓存/重启" -> "无效并重启"。对我很有效。@Mr_and_Mrs_D - myildirim
@myildirim:谢谢 - 如果我回去的话,我会检查这个。 - Mr_and_Mrs_D
1
我仍然有同样的问题...这通常发生在第三方应用程序中。 - psychok7
3
清除缓存 / 重新启动解决了我的问题。谢谢! - snowbound
1
请注意,您只能添加一个“内容根目录”,但可以添加多个“源文件夹”。 - edilio

5
我也遇到了这个问题,找到确切的解决方法花了我几个小时。
您需要确认以下几点:
  1. 在应用程序的settings.py文件中,确保已将'django.contrib.staticfiles'添加到INSTALLED_APPS中。

  2. 静态内容(例如图像)所在的名为static的目录位于应用程序根目录下。

现在请按照以下步骤操作

PyCharm > Preferences > Project Settings > Django

确保在对话框中正确定义了您的Django项目根目录Settings.pymanage.py脚本。

完成了上述步骤,您就可以开始使用了。希望这能有所帮助。


感谢您的帮助,不幸的是在我的情况下这不是一个Django项目,所以这种方法并不适用。但它可能作为一种替代方案对其他人有所帮助。 - Sergio Ayestarán
酷,谢谢,摇滚!! - A.J.
@Clayton,整个settings.py文件看起来是什么样子?你具体改变了什么? - J4cK

3

我已经按照einoccnet和myildirim的方法去尝试了,但仍需执行以下步骤:

关闭Pycharm并手动删除.idea文件夹,这样Pycharm就会忘记之前的所有代码。

重新打开Pycharm,并重新导入项目。

设置正确的源目录、重启Python并清除缓存,以及删除.idea文件夹/重新导入Pycharm项目,以上步骤的组合解决了我的问题。


1
我想将这个添加到einnocent的答案中,因为它非常适合。但由于没有足够的声望来评论,所以我将其作为单独的答案发布了。 - Simon
这个答案对我有用。看起来是一个完全合理的答案。 - user2682863
1
很不幸,即使是在原始问题发表后的8年里,我仍然遇到相同的问题。手动删除.idea/文件夹并标注源文件夹有效,但还没有更好的解决方案吗? - J-Schaefer

1
我在使用pyspark ( spark 2.1 )和luigi时遇到了类似的问题。
尝试过以下方法但均失败: 1.设置PYTHONPATH环境变量 2.清除缓存并重启pycharm 3.将目录标记为“Source Root”
引用未解决的pyspark可以通过在项目中添加spark的python目录作为Content Root来修复,但作为luigi任务运行项目仍会出现相同的错误。
成功的步骤如下:
  • Create an empty __init__.py file in the project
  • Include following lines of code at the top of script

    ...
    import sys
    
    sys.path.append("/path/to/spark/python")
    
    sys.path.append("/path/to/spark/python/lib")
    
    ...
    // import pyspark files after above mentioned lines
    

并且在pycharm和luigi任务中修复了未解决的引用错误问题。


1

我的建议 - 如果你正在使用虚拟环境(有一个venv目录),请确保将其标记为排除。

从上面抄袭:

  • 在项目视图中,右键单击venv目录
  • 在对话框菜单中选择标记目录为 > 排除

该目录应该变成橙色...

如果你做了git clean或由于某种原因不得不重建你的环境而PyCharm没有注意到,这有时会发生。


1

PyCharm > 选择 "文件" 菜单 > 选择 "无效缓存 / 重启" 菜单选项


0
另一个原因可能是“项目解释器”。例如,如果您正在使用Python3.x,但解释器是Python2.x的,则可以在此处检查:

文件|设置|项目:'projectname'|项目解释器


0

PyCharm - Alt-F(ile); 设置; 项目结构; 点击+添加内容根目录; 指向包含有争议的包的文件夹: /home/joker/anaconda3/envs/conda_py27/lib/python2.7/site-packages。 我还将其标记为资源(不确定是否必需)。点击确定,重新索引即可完成。 这个在PyCharm Professional 2016.2.3中解决了我的问题。


我尝试过了,但它说内容根不应该相交。这不允许添加源。 - user238607

0

我在使用OpenCV时遇到了问题,但是这些答案都没有解决我的问题。

唯一有效的解决方案是将OpenCV文件夹路径添加到解释器中。 这个解决方案详细说明了所有步骤:这个解决方案


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接