我有一个目录结构

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

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

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

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


当前回答

我也使用了像上面Dan那样的虚拟环境,但是我能够在现有的环境中添加一个解释器,因此不需要继承全局站点包,从而撤销虚拟环境试图实现的目标。

其他回答

对于我来说:

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

在file1中,我有:

from Directory2 import file2

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

我是这样解决的:

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

AND

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

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

在我的情况下,问题是我使用的虚拟环境,没有访问全局站点包。因此,解释器不知道新安装的包。

要解决这个问题,只需编辑或重新创建虚拟解释器,并勾选“继承全局站点包”选项。

在遵循公认的答案后,做以下的事情为我解决了这个问题:

文件→设置→项目<您的目录/项目>→项目依赖项

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

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

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

告诉Pycharm src依赖MyDirectory解决了我的问题!

对我来说,将virtualenv (venv)的site-packages路径添加到解释器的路径中是可行的。 终于!

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