今天重新整理代码,将代码文件放到不同文件夹下时,import的时候花式报错,总结一下今天遇到的问题,日后遇到新的问题再更新。
1. 根目录下import
a.py
b.py
这个是最naive的,a.py和b.py都在根目录下,想要在b.py中import a,直接import就可以了。
2. 不同级目录(非同目录)下import
c
| a.py
b.py
a.py在目录c下,b.py和c同级,这时如果想要在b中import a,直接import c.a会报错。
你需要做的是,在c目录下加一个__init__.py文件,将目录c变成一个module。init文件内可以什么都不写。
3. 同目录(非根目录)下import
c
| a.py
| b.py
a.py和b.py都在c目录下,想要在b中import a,这时直接import就会报错。
ModuleNotFoundError: No module named 'a'
一般python会将根目录自动设置为source root,下面的文件夹就不会了,所以需要手动添加目录c到source root中,这样c下的文件就可以被找到。
import sys
sys.append('./c')
当然,也可以写c的绝对路径,但这样就导致别人想要使用你的代码时还要改路径才能跑,所以还是写相对路径吧233
但如果c下不只这两个文件,有很多文件,每个文件都要加这么两句很麻烦,所以可以直接在c下的__init__.py中添加路径。
4. 同级目录(不同目录)下improt
c
| a.py
d
| b.py
想要在b中import a,这个比较麻烦,我目前还没找到特别简单的做法,只能在b中加上
import sys
sys.path.append('..')
import c.a
5. pycharm中显示
pycharm显示也是一个问题,有时候运行不报错但是会显示找不到module。右击文件夹,mark directory as -> sources root,就可以了。
网友评论