转载自:https://www.cnblogs.com/taurusfy/p/7605787.html
***************************************************************************************************
以下是正文:
一个python项目中一个文件需要引用另一个文件中的类,遇到的几个问题,总结如下:
-
情况一:在同一目录下
目录结构:
|--a.py |--b.py |--main.py
在main.py中,需要引用a.py和b.py中的类:
from a imoport * from b imoport *
-
情况二:主路径下调用子文件夹中的类
目录结构:
|--a |---a.py |--b |---b.py |--main.py
在main.py中,需要引用a.py和b.py中的类,a,b为文件夹。但是直接这样引用会报错
from a.a imoport * from b.b imoport *
解决方法是在a,b文件夹中增加 __init__.py 文件
目录结构:
|--a |---__init__.py |---a.py |--b |---__init__.py |---b.py |--main.py
-
情况三:不同文件夹之间的调用
目录结构:
|--a |---__init__.py |---a.py |--b |---__init__.py |---b.py |--main.py
b中调用a中的类,或者a中调用b中的类
在b.py中
import sys sys.path.append('E:\testnow\project\a') import a
linux和window的路径格式不一样,该方法适用于所有跨文件夹调用情况,但要注意路径格式。
-
文件调用时出现的同一模块重复调用问题
目录结构:
|--a |---__init__.py |---a.py |--b |---__init__.py |---b.py |--main.py
比如a.py中调用了
from time import * from datetime import datetime
而且main.py中import了a:
from a.a import *
那么main.py中可以直接使用time(),datetime()相关函数,不需要再import了
此时如果main.py中 import time,并且这样调用相关函数time.time() 或time.sleep(1) ,会出现报错。
即使重复调用时,也要保证调用的一致性。