一、对于使用框架启动的项目时
导入模块就很简单了:
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的环境中