写在前面
最近写Python需要导入自己写的模块,但是如果程序和模块不在同一级目录下,在命令行里面运行就会出现ModuleNotFoundError(这么说是因为在PyCharm里面设置根目录就能直接导入)。
不过为了程序以后迁移方便,下面说一下具体的方法。
解决方案
情况一:目标模块与程序相差一级目录
环境:
Windows 10 + Python 3.6.8
这种情况只需要在程序最上面加上:
import sys
sys.path.append('..')
# 也可以采用如下方法,这种方法可以运行在Mac OS,Linux等系统,但也较为复杂
# 意思是从当前程序的目录往上进行路径的添加
# 注意__file__得到的路径还包括程序文件的路径
# 所以要比直接添加'..'多一个os.pardir
# import sys, os
# sys.path.append(
# os.path.abspath(
# os.path.join(
# __file__,
# os.pardir,
# os.pardir)))
在模块导入时就不会报错了。另外,像这样为了方便程序迁移的话,在导入自己的模块时候使用相对路径要好一些。
情况二:目标程序与模块相差两级或多级目录
针对目录相差两级的情况同理可以在程序首添加:
import sys
sys.path.append('..\\..')
# import sys, os
# sys.path.append(
# os.path.abspath(
# os.path.join(
# __file__,
# os.pardir,
# os.pardir,
# os.pardir)))
相隔几级目录就加几个‘..’,本例为相差两级目录的情况。