Experimentar
if __name__ == '__main__':
from [whatever the name of your package is] import one
else:
import one
Observe que no Python 3, a sintaxe da parte da else
cláusula seria
from .. import one
Pensando bem, isso provavelmente não resolverá seu problema específico. Entendi mal a pergunta e pensei que o two.py estava sendo executado como o módulo principal, mas esse não é o caso. E considerando as diferenças na maneira como o Python 2.6 (sem importar absolute_import
do __future__
) e o Python 3.x manipulam as importações, você não precisaria fazer isso no Python 2.6 de qualquer maneira, não acho.
Ainda assim, se você mudar para o Python 3 e planejar usar um módulo como um módulo de pacote e como um script independente dentro do pacote, pode ser uma boa ideia manter algo como
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
em mente.
EDIT: E agora para uma possível solução para o seu problema real. Execute o PyLint a partir do diretório que contém seu one
módulo (via linha de comando, talvez) ou coloque o seguinte código em algum lugar ao executar o PyLint:
import os
olddir = os.getcwd()
os.chdir([path_of_directory_containing_module_one])
import one
os.chdir(olddir)
Basicamente, como uma alternativa para mexer com PYTHONPATH, verifique se o diretório de trabalho atual é o diretório que contém one.py
quando você faz a importação.
(Olhando para a resposta de Brian, você provavelmente poderia atribuir o código anterior init_hook
, mas se você quiser fazer isso, basta fazer o anexo ao sys.path
que ele faz, o que é um pouco mais elegante que a minha solução.)