【发布时间】:2011-10-24 04:32:08
【问题描述】:
如何找出在 python 中导入特定文件的文件是什么文件?
考虑以下示例:
#a.py
import cmn
....
#b.py
import cmn
...
#cmn.py
#Here, I want to know which file (a.py or b.py)
#is importing this one.
#Is it possible to do this?
...
所有文件a.py、b.py和cmn.py都在同一个目录中。
我为什么要这样做?
在 C/C++ 中,它们具有包含功能。我想做的可以通过C/C++代码来说明。
//a.cpp
....
#define SOME_STUFF ....
#include "cmn.h"
//b.cpp
...
#define SOME_STUFF ....
#include "cmn.h"
//cmn.h
//Here, I'll define some functions/classes that will use the symbol define
//in the a.cpp or b.cpp
...
....code refer to the SOME_STUFF.....
在C/C++中,我们可以使用这种方法来重用源代码。
现在回到我的 python 代码。
当a.py导入cmn.py时,我希望运行cmn.py,cmn.py会引用a.py中定义的符号。
当b.py import cmn.py时,我希望运行cmn.py,cmn.py会引用b.py中定义的符号。
【问题讨论】:
-
库不应该依赖于谁导入它们,所以这真的不重要。
-
@MichaelAaronSafyan 是对的。不过,它可以完成,正如我在这里演示的那样:stackoverflow.com/questions/7025538/…。但是...您要解决的真正问题是什么?
-
你想达到什么目的?也许有一种替代方法可以实现它,而无需像这样耦合您的文件。
-
@Yuncy:你想让
cmn.py的所有导入在cmn.py中运行一些代码吗?我问这个问题是因为正常的操作方式是 Python 只导入模块一次,所以cmn.py通常只有一次机会知道谁在做import cmn。 Tavis Rudd 的答案可能是解决方案,如果你想抓住 everyimport cmn. -
@EOL 你是对的。我想做这个。我根据反馈改进了我的问题。