问题描述
pycharm中从同文件夹目录下导入其他.py文件和其他文件夹报错
解决方法1
如果要导入的包是一个文件夹,例如我想要导入同目录下的pytorch-pretrain-bert
,由于我的环境里本来就是有pytorch-pretrain-bert
这个包的,所以解释器默认会从后端path去编译,也就是两个包名重复了。
最简单的办法是在导入包前面加上.
,指明了要导入的包是当前py文件同路径下的,这样就消除了歧义
解决方法2(推荐)
上述的方法只能解决导入的是其他文件夹,但是如果要导入其他.py文件就不行
主要原因还是目标文件不在pycharm编译path下,右键将其加入到source root
另外,在pycharm里面,你只有将direction设置为source,这个direction下面的package才能正常显示(也就是python包的样子,不然看上去会和普通direction没差别),所以绝大多数情况下,在使用pycharm的时候把一些direction设置为source是没什么坏处的。
解决方法3
直接将当前文件夹路径加入到运行编译路径下
import sys
import os
sys.path.append(os.path.abspath("../"))
这样main.py在编译运行的时候,解释器会额外从"…/"下去找包,虽然命令行里面run没有问题,但是pycharm里面还是会报红,强迫症的表示不能接受
解决方法4(推荐)
将该direction初始化为package
换句话说,就是直接在这个direction下面新建一个空的’__init__.py
'文件