Python引用任意位置模块方法总结

360 阅读1分钟

写在前面

最近写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)))

相隔几级目录就加几个‘..’,本例为相差两级目录的情况。