天天看点

Python之BASEDIR(导入模块时容易犯得隐形错误)

Python之BASEDIR

Python之BASEDIR(导入模块时容易犯得隐形错误)

正常情况下,在test.py模块里from module import main 是个隐形的错误,虽然程序会正常执行(因为pycharm编译器搜索路径时先在这个路径’C:\Users\hongsongyangyang\PycharmProjects\ATM\bin’下搜索,但是却找不到,然后pycharm编译器就自动加了一条路径’C:\Users\hongsongyangyang\PycharmProjects\ATM’,此时就能找到module包下的main模块了,但是逻辑上确是不正确的,我们可以在命令行窗口运行程序test.py会出现No module named ‘module’。

Python之BASEDIR(导入模块时容易犯得隐形错误)

此时我们可以人为将’C:\Users\hongsongyangyang\PycharmProjects\ATM’路径加进去。

Python之BASEDIR(导入模块时容易犯得隐形错误)
Python之BASEDIR(导入模块时容易犯得隐形错误)

此时就不会出现No module named 'module’

__ file__ : 是用来获得模块所在的路径的,这得到的是一个相对路径(在命令行窗口里运行该程序才能看到相对路径)

Python之BASEDIR(导入模块时容易犯得隐形错误)
Python之BASEDIR(导入模块时容易犯得隐形错误)

os.path.abspath()—>把相对路径转换为绝对路径

os.path.dirname()—>测试脚本所在的位置,可以一层一层的往上找,例如:

print(os.path.dirname(os.path.abspath(file)))

输出:C:\Users\hongsongyangyang\PycharmProjects\ATM\bin

print(os.path.dirname(os.path.dirname(os.path.abspath(file))))

输出:C:\Users\hongsongyangyang\PycharmProjects\ATM

Python之BASEDIR(导入模块时容易犯得隐形错误)
Python之BASEDIR(导入模块时容易犯得隐形错误)

现在在任何电脑上都可以以这种方式导入模块了。