首页 > 其他 > 详细

模块导入

时间:2019-04-21 21:22:20      阅读:182      评论:0      收藏:0      [点我收藏+]

一.包

当模块越来越多时,就需要把模块分类。像下图,一个文件夹管理多个模块,这个文件夹就叫做包。

技术分享图片

注:

1.文件夹被视为包需要在文件夹内创建一个_init_.py文件,虽然在Python3中不加也不会出错,但是一般默认加此文件。

2.不能作为主函数的入口。

二.跨模块导入

1.执行manage.py,manage.py所在的位置已经加到了sys.path了,当从crm中调用views.py时就不会报错。

2.当不执行manage.py时,想直接从views.py中调用settings.py,需要加入想调用函数的路径。

import os,sys

BASEDIR = os.path.dirname(os.path.dirname(_file_))  #回到与crm、my_proj的同级目录

sys.path.append(BASEDIR)                  #添加目录

from proj import settings

但此方法获取的是相对路径,程序执行时可能由于无法找到需要获取的模块而报错。

3.

import os,sys

BASEDIR = os.path.dirname(os.path.dirname(os.path.abspath(_file_)))  #获取绝对路径之后再回到同级目录

sys.path.append(BASEDIR)

from proj import settings

用这个方法先获取文件的绝对路径,就绝对不会出错了。

三.相对导入

假如执行manage.py后需要从views.py中调用models.py,需要用到 from crm import models ,而不能直接用import models调用,这是因为先执行manage.py,路径就是manage.py所在的路径,而manage.py

所在的路径并不存在models.py,所以不能直接调用。

假如,models.py和views.py与最外层目录间存在很多层目录,如果需要调用时,程序就需要写很多层,一直写到models.py所存在的目录。所以可以使用 from . impor models 调用。而 “.” 代表的就是当前目录。

注:导入时一定不要到程序的根目录,假如到了文件的根目录的话,因为文件的根目录并不算是一个包,所以调用就会报错。

 

模块导入

原文:https://www.cnblogs.com/sunj-96/p/10746957.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!