我有一个目录结构
├── simulate.py
├── src
│ ├── networkAlgorithm.py
│ ├── ...
我可以使用sys.path.insert()访问网络模块。
import sys
import os.path
sys.path.insert(0, "./src")
from networkAlgorithm import *
但是,pycharm抱怨它无法访问该模块。我如何教pycham解决引用?
我有一个目录结构
├── simulate.py
├── src
│ ├── networkAlgorithm.py
│ ├── ...
我可以使用sys.path.insert()访问网络模块。
import sys
import os.path
sys.path.insert(0, "./src")
from networkAlgorithm import *
但是,pycharm抱怨它无法访问该模块。我如何教pycham解决引用?
当前回答
在我的例子中,使用Pycharm 2019.3,问题是我忘记向我想导入的文件添加扩展名“.py”。一旦添加,错误就会消失,而不需要使缓存无效或任何其他步骤。
其他回答
在我的情况下,问题是我使用的虚拟环境,没有访问全局站点包。因此,解释器不知道新安装的包。
要解决这个问题,只需编辑或重新创建虚拟解释器,并勾选“继承全局站点包”选项。
Pycharm使用venv。在venv的控制台中,您应该显式地安装包或进入设置->项目解释器->添加解释器->继承全局站点包。
对于我来说:
Directory0
├── Directory1
│ └── file1.py
├── Directory2
│ ├── file2.py
在file1中,我有:
from Directory2 import file2
它传输一个“未解决的引用Directory2”。
我是这样解决的:
如上所述,将父目录Directory0标记为“源根”
AND
把我的光标放在我有错误的文件上的另一行,这样它就会考虑到我的修改
这很愚蠢,但如果我不执行第二个操作,错误仍然会出现,并可能使您认为您没有通过将父目录标记为Source Root来解决问题。
在我的例子中,使用Pycharm 2019.3,问题是我忘记向我想导入的文件添加扩展名“.py”。一旦添加,错误就会消失,而不需要使缓存无效或任何其他步骤。
在遵循公认的答案后,做以下的事情为我解决了这个问题:
文件→设置→项目<您的目录/项目>→项目依赖项
选择未解决导入的文件所在的目录/项目,并选中复选框,告诉Pycharm该项目依赖于您的其他项目。
我的文件夹层次结构与问题中的略有不同。我的是这样的
├── MyDirectory
│ └── simulate.py
├── src
│ ├── networkAlgorithm.py
│ ├── ...
告诉Pycharm src依赖MyDirectory解决了我的问题!