python-import语法:脚本项目怎么实现相互导入问题

一、对于使用框架启动的项目时

导入模块就很简单了:

1、直接到导入

import  os

2、from xx import xx

from os.path import dirname,abspath

3、from xx import xxx as yyy

#这个在django框架会常用到,给导入的模块起新名字

from user import models as user_models

二、对于非框架(启动文件位置很重要)

项目结构:

test

        ambulane

                __init__.py

                other.py

                public.py

        manage.py

在ambulance/public.py中

URL='https://ambulance.sssss.net'
ambulance_number = 'car-0001'
ambulance_id = 1

在ambulance/other.py中

from ambulance.public import URL
def dun():
    print(URL)
    return 'ok'

if __name__ == '__main__':
    print(URL)

manage.py

import sys

from ambulance.public import URL
from ambulance.other import dun


if __name__ == '__main__':
    dun()
    print(URL)
    print(sys.path)

如果整个脚本项目,是通过manage.py 去启动的话,就不会报任何的错误。

1、python manage.py 时,会把 项目根目录test 添加到sys.path中,这个是存python解释器的环境路径的。

2、如果是 python other.py  ,此时不会把项目根目录test添加到sys.path中,而是把test/ambulance 添加到sys.path中,此时就不会报错

报错信息:

ModuleNotFoundError: No module named 'ambulance'

可以解决这个问题:

#在other.py最开头的位置,把项目根目录test添加到环境中
import sys
from os.path import dirname,abspath
BASE_DIR = abspath(dirname(dirname(__file__)))
sys.path.append(BASE_DIR)

from ambulance.public import URL

三、总结

1、使用脚本启动python项目,一定要把启动文件设置在根目录下,不能设置在其他包中

2、python在运行模块时,会将该模块所在的目录的路径添加到python的环境中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值