我有一个目录结构

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

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

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

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


当前回答

如果有人还在看这个问题,当我尝试它时,接受的答案仍然适用于PyCharm 2016.3。UI可能已经更改,但选项仍然相同。

ie。右键单击根文件夹——>“标记目录为”——>源根

其他回答

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

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

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

在新版本的pycharm中,只需右键单击想要导入文件的目录或python包,然后单击“标记目录为”->“源根”

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

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

我克隆的项目有一个名为modules的目录,并成功地在import this as that的代码中使用了那里的文件,但Pycharm无法跳转到那些代码片段,因为它无法识别导入。

将下面设置部分中的模块文件夹标记为源解决了这个问题。

对于我来说:

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

在file1中,我有:

from Directory2 import file2

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

我是这样解决的:

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

AND

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

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