Python全栈day21(调用模块路径BASEDIR的正确方法),,正常写python程
Python全栈day21(调用模块路径BASEDIR的正确方法),,正常写python程
正常写python程序会有一个可执行的bin.py文件,假如这个文件需要导入my_module里面定义的模块,应该怎么设置sys.path
文件夹目录结构如下,因为bin不在与my_module同级目录下,而是在bin目录下,如果直接使用from my_module import main调用模块肯定会报错,需要把对应的上一级目录day21_lesson添加到sys.path
一,使用绝对路径添加
import sys,ossys.path.append(r‘D:/blzfmima/python3_s3/day21/day21_lesson/‘)from my_module import mainmain.run()print(__name__)if __name__ == ‘__main__‘: pass
使用绝对路径把对应的目录添加到sys.path里面相当于把程序写死了,一旦目录结构发生变化或者复制到其他主机将不能运行
二,使用相对路径添加
__file__变量是文件的名称
os.path.dirname 是os内置方法取文件的路径这里连续使用两次方法取文件bin.py路径为D:/blzfmima/python3_s3/day21/day21_lesson/bin 然后在针对这个路径再取一次路径获取需要的路径D:/blzfmima/python3_s3/day21/day21_lesson/
import sys,osBASE_DIR = os.path.dirname(os.path.dirname(__file__))sys.path.append(BASE_DIR)#sys.path.append(r‘D:/blzfmima/python3_s3/day21/day21_lesson/‘)from my_module import mainmain.run()print(__name__)if __name__ == ‘__main__‘: pass
以上可以在pycharm里面正常实现调用,但是在终端执行还是会出错,因为Pycharm会自作主张添加绝对路径
三,终极方法 使用os.path.abspath取文件bin.py绝对路径 然后使用两次os.path.dirname取到上两层的路径及本列的路径D:/blzfmima/python3_s3/day21/day21_lesson/
import sys,osBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))sys.path.append(BASE_DIR)#sys.path.append(r‘D:/blzfmima/python3_s3/day21/day21_lesson/‘)from my_module import mainmain.run()print(__name__)if __name__ == ‘__main__‘: pass
Python全栈day21(调用模块路径BASEDIR的正确方法)
相关内容
- Python——爬虫学习1,,爬虫了解一下网络爬虫
- python------面向对象进阶,,*面向对象高级语法部
- Python—字符串,,####Python
- Python—元类,,什么是元类?元类是类
- python——pickle模块的详解,pythonpickle详解,pickle模块详解
- python包与模块,python包模块,Python基础-包
- Sublime Text3 Python虚拟环境(补充)——解决控制台中文
- python对目录下的文件进行 多条件排序,,在进入正题之
- Python之urllib库详解,pythonurllib详解,urllib 是 P
- Python实现栈和队列,Python实现栈队列,栈:# -*- co
评论关闭