Próbować
if __name__ == '__main__':
from [whatever the name of your package is] import one
else:
import one
Zwróć uwagę, że w Pythonie 3 składnia części w elseklauzuli wyglądałaby tak
from .. import one
Po namyśle to prawdopodobnie nie rozwiąże Twojego konkretnego problemu. Źle zrozumiałem pytanie i pomyślałem, że two.py jest uruchamiany jako główny moduł, ale tak nie jest. Biorąc pod uwagę różnice w sposobie, w jaki Python 2.6 (bez importowania absolute_importz __future__) i Python 3.x obsługuje importowanie, i tak nie musiałbyś tego robić dla Pythona 2.6, nie sądzę.
Jeśli jednak w końcu przejdziesz na Python 3 i planujesz używać modułu zarówno jako modułu pakietu, jak i samodzielnego skryptu wewnątrz pakietu, dobrym pomysłem może być zachowanie czegoś takiego jak
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
na myśli.
EDYCJA: A teraz możliwe rozwiązanie Twojego rzeczywistego problemu. Albo uruchom PyLint z katalogu zawierającego twój onemoduł (być może przez wiersz poleceń) lub umieść następujący kod gdzieś podczas uruchamiania PyLint:
import os
olddir = os.getcwd()
os.chdir([path_of_directory_containing_module_one])
import one
os.chdir(olddir)
Zasadniczo, jako alternatywa dla majstrowania przy PYTHONPATH, po prostu upewnij się, że bieżący katalog roboczy jest katalogiem zawierającym one.pypodczas importowania.
(Patrząc na odpowiedź Briana, prawdopodobnie mógłbyś przypisać poprzedni kod do init_hook, ale jeśli zamierzasz to zrobić, możesz po prostu dodać do sys.pathtego, co robi, co jest nieco bardziej eleganckie niż moje rozwiązanie).