Versuchen
if __name__ == '__main__':
from [whatever the name of your package is] import one
else:
import one
Beachten Sie, dass in Python 3 die Syntax für den Teil in der else
Klausel lautet
from .. import one
Beim zweiten Gedanken wird dies wahrscheinlich Ihr spezifisches Problem nicht beheben. Ich habe die Frage falsch verstanden und dachte, dass two.py als Hauptmodul ausgeführt wird, aber das ist nicht der Fall. Und angesichts der Unterschiede in der Art und Weise, wie Python 2.6 (ohne Import absolute_import
von __future__
) und Python 3.x Importe handhaben, müssten Sie dies für Python 2.6 sowieso nicht tun, glaube ich nicht.
Wenn Sie jedoch irgendwann zu Python 3 wechseln und ein Modul sowohl als Paketmodul als auch als eigenständiges Skript im Paket verwenden möchten, ist es möglicherweise eine gute Idee, so etwas wie beizubehalten
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
im Kopf.
EDIT: Und jetzt zu einer möglichen Lösung für Ihr eigentliches Problem. Führen Sie PyLint entweder in dem Verzeichnis aus, in dem sich Ihr one
Modul befindet (möglicherweise über die Befehlszeile), oder geben Sie beim Ausführen von PyLint den folgenden Code ein:
import os
olddir = os.getcwd()
os.chdir([path_of_directory_containing_module_one])
import one
os.chdir(olddir)
Als Alternative zum Spielen mit PYTHONPATH stellen Sie einfach sicher, dass das aktuelle Arbeitsverzeichnis das Verzeichnis ist, das es enthält one.py
Sie beim Importieren enthalten.
(Wenn Sie sich Brians Antwort ansehen, könnten Sie wahrscheinlich den vorherigen Code zuweisen init_hook
, aber wenn Sie das tun, können Sie einfach das Anhängen an sys.path
das tun, was er tut, was etwas eleganter ist als meine Lösung.)