欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python Flask 6.0.2 相对路径

程序员文章站 2022-05-09 23:45:10
...

欢迎访问地平线上的一匹狼-Python Flask 6.0.2

在Python引入包时,我们会发现有这样的一种引用方法:
from . import XX,以及from .. import xx.
这就是相对路径引用.
其中有几点需要注意.

1.在编译时,存在这种相对引用的.py是无法被单独编译的,只有在编译*的.py时,才不会报编译级别错误.

2.存在跨文件夹引用时,需要在相应文件夹内创建一个__init__.py才可以引用成功,(就算该文件是空的也没关系)因为加了这个文件,编译器才会把该文件夹看做一个package,即可以用from 文件夹名 import 类/文件等方式进行引用.

3.在主程序运行后,调用每个包时会先调用该包的__init__.py文件,然后再调用对应import的内容.

这里我结合上一节的Factory method编写了一个简单的测试程序:

具体目录结构如下:
--工厂函数/
    --tests/
        --abc/
            --__init__.py
            --qb.py
        --__init__.py
        --test2.py
    --test.py(主程)

项目地址: Click Here: 工厂函数

运行test.py,Result:
Python Flask 6.0.2 相对路径

test.py:

from tests.abc.qb import crete_factory_method

factory_test = crete_factory_method('这是第一个单元测试')

factory_test2 = crete_factory_method('这是第二个单元测试')

factory_test.print_str()

factory_test2.print_str()

tests/__init__.py:

print("I'm Tom's __init__!")

tests/test2.py:

class mq(object):
    def __init__(self,string_c):
        self.config_str=string_c
    def print_str(self):
        print(self.config_str)

tests/abc/__init__.py:

print('由此可知,如果直接编译qb.py会报错,因为等级?错误,但是直接编译最顶层的test.py就不会报错了.')

tests/abc/qb.py:

from ..test2 import mq

def crete_factory_method(config_str):
    tp=mq(config_str)
    return tp