关于python:PyCharm中未解决的引用问题

Unresolved reference issue in PyCharm

我有一个目录结构

1
2
3
4
├── simulate.py
├── src
│   ├── networkAlgorithm.py
│   ├── ...

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

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

但是,Pycharm抱怨它无法访问模块。我如何教Pycham解决参考问题?

enter image description here


手工添加,正如您所做的,确实是一种方法,但有一个更简单的方法,那就是简单地告诉pycharm您想要添加src文件夹作为源根,然后将源根添加到您的python路径。

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

    百万千克1添加src作为源内容根:百万千克1

&公司氧化镁

    百万千克1然后确保向您的PYTHONPATH添加源:百万千克1

氧化镁

    百万千克1现在将解决进口问题:百万千克1

&公司氧化镁

通过这种方式,您可以添加您想要的任何内容作为源根,这样事情就可以简单地工作。但是,如果将其取消标记为源根目录,则会得到一个错误:

&(b)不适用于氧化镁


型百万千克1检查src文件夹中的__init__.py文件百万千克1百万千克1添加src文件夹作为源根目录百万千克1百万千克1然后确保向您的PYTHONPATH添加源(见上文)百万千克1百万千克1在pycharm菜单中,选择:文件——>使缓存无效/重新启动百万千克1


如果有人仍在关注这个问题,当我尝试的时候,这个公认的答案仍然适用于pycharm 2016.3。用户界面可能已更改,但选项仍然相同。

也就是说,右键单击根文件夹-->"将目录标记为"-->源根目录


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

pycharm prefrence


通常,$pythonpath用来教python解释器查找必要的模块。Pycharm需要优先添加路径。

enter image description here


一般来说,这是一个丢失的包问题,只需将插入符号放在未解决的引用中,然后按Alt+Enter以显示选项,那么您应该知道如何解决它。


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

FileSettingsProject Project Dependencies

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

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

1
2
3
4
5
├── MyDirectory  
│     └── simulate.py  
├── src  
│     ├── networkAlgorithm.py  
│     ├── ...

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


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

enter image description here


请检查您使用的口译员是否正确。我得到错误"未解决的引用"django",为了解决这个问题,我从项目设置中更改了项目解释器(将python 3更改为python 2.7):选择Project,转到File(文件)->Settings(设置)->Project:->Project Interpreter(项目解释器)->Brows(浏览),然后选择正确的版本或解释器(例如/usr/bin/python2.7)。


很多时候,插件没有安装。例如

如果您正在开发一个Django项目,而您没有在Pycharm中安装Django插件,它会说错误"未解决的引用"。参考:https://www.jetbrains.com/pycharm/help/resolving-references.html网站


在我的例子中,问题是我使用的是Virtual environment,它没有访问全局站点包的权限。因此,解释器不知道新安装的包。

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

氧化镁


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