我有一个目录结构

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

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

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

但是,pycharm抱怨它无法访问该模块。我如何教pycham解决引用?


当前回答

这里所有的东西我都试过两次,甚至更多。我最终解决了这个问题,做了一些我在网上从未见过的事情。如果你去>编辑器>文件类型的设置,在底部有一个“忽略文件和文件夹”行。在我的例子中,我忽略了“venv”,这是我的虚拟环境的名字。所以我去掉了venv;从目录列表中忽略,瞧!!我终于解决了这个问题。实际上,我在这个项目中遇到的所有导入问题都得到了解决。

BTW, I had installed each and every package using PyCharm, and not through a terminal. (Meaning, by going to Settings>Interpreter...). I had invalidated cache, changed 'Source Root', restarted PyCharm, refreshed my interpreters paths, changed interpreters, deleted my venv... I tried everything. This finally worked. Obviously there are multiple problems going on here with different people, so this may not work for you, but it's definitely worth a shot if nothing else has worked, and easy to reverse if it doesn't.

其他回答

对于我来说:

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

在file1中,我有:

from Directory2 import file2

它传输一个“未解决的引用Directory2”。

我是这样解决的:

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

AND

把我的光标放在我有错误的文件上的另一行,这样它就会考虑到我的修改

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

在PyCharm中右键单击文件所在的目录 转到——>标记目录为 选择——>源根

你的问题会解决的

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

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

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

这样,你就不必在解释器的设置中硬编码:

添加src作为源内容根:

                           

然后确保在PYTHONPATH下面添加add sources: 首选项~构建、执行、部署~控制台~ Python控制台

现在进口问题将得到解决:

                     

通过这种方式,您可以添加任何您想要的源根,并且事情将简单地工作。但是,如果你没有将它标记为源根,你会得到一个错误:

                                 

完成所有这些后,不要忘记重新启动。在PyCharm菜单中选择:File——> Invalidate Caches / Restart

虽然所有的答案都很有帮助,但有一小部分信息应该明确解释:

本质上,具有多个层次目录的项目作为具有某些属性的包工作。 要导入自定义本地创建的类,我们需要导航到包含.py文件的目录,并在那里创建一个__init__.py(空)文件。

这之所以有用,是因为需要这个文件才能使Python将该目录视为包含包的目录。干杯!