Essayer
if __name__ == '__main__':
from [whatever the name of your package is] import one
else:
import one
Notez que dans Python 3, la syntaxe de la partie de la else
clause serait
from .. import one
À la réflexion, cela ne résoudra probablement pas votre problème spécifique. J'ai mal compris la question et j'ai 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 manière dont Python 2.6 (sans importer absolute_import
depuis__future__
) et Python 3.x gèrent 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 éventuellement à Python 3 et que vous prévoyez d'utiliser un module à la fois comme module de package et comme script autonome à l'intérieur du package, 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 pour une solution possible à votre problème réel. Exécutez PyLint à partir du répertoire contenant votre one
module (via la ligne de commande, peut-être), 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)
Fondamentalement, au lieu de jouer avec PYTHONPATH, assurez-vous simplement que le répertoire de travail actuel est le répertoire contenant one.py
lorsque vous effectuez l'importation.
(En regardant la réponse de Brian, vous pourriez probablement attribuer le code précédent à init_hook
, mais si vous voulez le faire, vous pouvez simplement ajouter sys.path
ce qu'il fait, ce qui est légèrement plus élégant que ma solution.)