Essayer
~~if name == 'main':
from [whatever the name of your package is] import one
else:
import one
Notez qu'en Python 3, la syntaxe de la partie dans la balise else
serait la suivante
from .. import one~~
À bien y réfléchir, cela ne résoudra probablement pas votre problème spécifique. J'ai mal compris la question et pensé que two.py était exécuté en tant que module principal, mais ce n'est pas le cas. Et compte tenu des différences dans la façon dont Python 2.6 (sans importation de absolute_import
de __future__
) et que Python 3.x gère les importations, vous n'auriez pas besoin de le faire pour Python 2.6 de toute façon, je ne pense pas.
Néanmoins, si vous passez finalement à Python 3 et que vous prévoyez d'utiliser un module à la fois comme module de paquetage et comme script autonome à l'intérieur du paquetage, il peut être judicieux de conserver quelque chose comme
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
à l'esprit.
EDIT : Et maintenant, une solution possible à votre problème actuel. Soit vous exécutez PyLint à partir du répertoire contenant votre fichier one
(via la ligne de commande, par exemple), ou placez le code suivant quelque part lors de l'exécution de PyLint :
import os
olddir = os.getcwd()
os.chdir([path_of_directory_containing_module_one])
import one
os.chdir(olddir)
En fait, au lieu de jouer avec PYTHONPATH, il suffit de s'assurer que le répertoire de travail courant est le répertoire contenant one.py
lors de l'importation.
(En regardant la réponse de Brian, vous pourriez probablement assigner le code précédent à init_hook
mais si vous voulez faire cela, vous pouvez simplement l'ajouter à sys.path
qu'il fait, ce qui est légèrement plus élégant que ma solution).