【发布时间】:2020-01-26 19:06:41
【问题描述】:
我有几个相互独立编写的python 项目(例如a、b)。我想创建第三个项目(c),它使用这两个项目的例程,而不会对(a,b)的主要内容进行太多更改。
只要 (a.py, b.py) 在各自的项目文件夹中调用时仍然可以工作,对 (a, b) 中的导入语句进行微小更改即可。
这个问题有点类似于之前的帖子(Re-importing different python module with same name)但是:
我使用的是 Python 3,因此相对导入的工作方式似乎有所不同。
我想知道如何替换“from utils import *”行,如下例所示。
我在当前工作目录下有另一个 utils.py,它覆盖了项目 a 和 b 中的另一个 utils.py。
例如我的项目如下:
- 一个
- a.py
- utils.py
- b
- b.py
- utils.py
- c
- main.py
- utils.py
a/a.py 的内容:
import utils
utils.hello()
a/utils.py 的内容:
def hello():
print('hello from a')
b/b.py 的内容:
from utils import *
hello()
b/utils.py 的内容:
def hello():
print('hello from b')
main.py 的内容
import sys
sys.path.append('../a')
import a
sys.path.append('../b')
import b
import utils
utils.hello()
示例打印(我希望三行分别打印 a、b、c):
hello from c
hello from c
hello from c
在我看来,sys.path.insert 和 sys.append 导入模块并不是很好的做法,并且随着项目的扩大,可能会使项目容易受到错误的影响。
【问题讨论】:
标签: python python-3.x