Provare
if __name__ == '__main__':
from [whatever the name of your package is] import one
else:
import one
Si noti che in Python 3, la sintassi per la parte nella else
clausola sarebbe
from .. import one
A pensarci bene, questo probabilmente non risolverà il tuo problema specifico. Ho frainteso la domanda e ho pensato che two.py fosse gestito come il modulo principale, ma non è così. E considerando le differenze nel modo in cui Python 2.6 (senza importare absolute_import
da __future__
) e Python 3.x gestiscono le importazioni, non dovresti farlo comunque per Python 2.6, non credo.
Tuttavia, se alla fine si passa a Python 3 e si prevede di utilizzare un modulo sia come modulo pacchetto sia come script autonomo all'interno del pacchetto, potrebbe essere una buona idea mantenere qualcosa come
if __name__ == '__main__':
from [whatever the name of your package is] import one # assuming the package is in the current working directory or a subdirectory of PYTHONPATH
else:
from .. import one
in mente.
EDIT: E ora per una possibile soluzione al tuo problema reale. O esegui PyLint dalla directory che contiene il tuo one
modulo (tramite la riga di comando, forse) o metti il seguente codice da qualche parte quando esegui PyLint:
import os
olddir = os.getcwd()
os.chdir([path_of_directory_containing_module_one])
import one
os.chdir(olddir)
Fondamentalmente, in alternativa alla manipolazione di PYTHONPATH, assicurati che la directory di lavoro corrente sia la directory che contiene one.py
quando esegui l'importazione.
(Guardando la risposta di Brian, potresti probabilmente assegnare il codice precedente a init_hook
, ma se hai intenzione di farlo, potresti semplicemente fare l'aggiunta a sys.path
quello che fa, che è leggermente più elegante della mia soluzione.)