Спробуйте
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
в пам'яті.
EDIT: А тепер для можливого вирішення вашої реальної проблеми. Або запустіть 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
що він робить, що трохи елегантніше, ніж моє рішення.)