Пытаться
if __name__ == '__main__':
from [whatever the name of your package is] import one
else:
import one
Обратите внимание, что в Python 3 синтаксис для части в else
предложении будет
from .. import one
Если подумать, это, вероятно, не решит вашу конкретную проблему. Я неправильно понял вопрос и подумал, что two.py запускается как основной модуль, но это не так. И учитывая различия в способе Python 2.6 (без импорта absolute_import
из__future__
) и Python 3.x, в любом случае вам не понадобится делать это для Python 2.6, я не думаю.
Тем не менее, если вы в конечном итоге переключитесь на Python 3 и планируете использовать модуль как пакетный модуль и как отдельный скрипт внутри пакета, возможно, будет хорошей идеей сохранить что-то вроде
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
в уме.
РЕДАКТИРОВАТЬ: И теперь для возможного решения вашей актуальной проблемы. Либо запустите PyLint из каталога, содержащего ваш one
модуль (возможно, из командной строки), либо поместите следующий код где-нибудь при запуске PyLint:
import os
olddir = os.getcwd()
os.chdir([path_of_directory_containing_module_one])
import one
os.chdir(olddir)
В основном, в качестве альтернативы возни с PYTHONPATH, просто убедитесь, что текущий рабочий каталог - это каталог, содержащий one.py
при выполнении импорта.
(Глядя на ответ Брайана, вы, вероятно, могли бы присвоить предыдущий код init_hook
, но если вы собираетесь это сделать, то можете просто добавить к нему sys.path
то, что он делает, что несколько элегантнее, чем мое решение.)