Come posso sapere quale file sta importando un particolare file in python?Come sapere chi mi sta importando in python?
consideri il seguente esempio:
#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?
...
Tutti i file a.py
, b.py
e cmn.py
sono nella stessa directory.
Perché voglio farlo?
In C/C++, hanno funzione di inclusione. Quello che voglio fare può essere illuminato dal codice 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.....
In C/C++, possiamo utilizzare questo metodo per riutilizzare il codice sorgente.
Ora torna al mio codice Python.
Quando a.py import cmn.py, spero di eseguire cmn.py e cmn.py farà riferimento al simbolo definito in a.py.
Quando b.py importa cmn.py, spero di eseguire cmn.py e cmn.py farà riferimento al simbolo definito nel file b.py.
Le librerie non devono dipendere da chi le importa, quindi in realtà non dovrebbe avere importanza. –
@ MichaelAaronSafyan ha ragione. Tuttavia * può * essere fatto, come dimostrerò qui: http://stackoverflow.com/questions/7025538/in-python-if-a-module-calls-upon-another-modules-functions-is-it-it possibile-per/7025963 # 7025963. Tuttavia ... qual è il problema * reale * che stai cercando di risolvere? – Johnsyweb
Cosa stai cercando di ottenere? Forse c'è un modo alternativo per ottenerlo senza dover accoppiare i tuoi file in questo modo. –