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 elseclausola 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_importda __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 onemodulo (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.pyquando 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.pathquello che fa, che è leggermente più elegante della mia soluzione.)