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 else
klauzuli 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_import
z __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 one
moduł (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.py
podczas 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.path
tego, co robi, co jest nieco bardziej eleganckie niż moje rozwiązanie).