2010-12-20 5 views
6

Es ist schlecht Python als die Einfuhren wie folgt zu verwenden:Tool zum Erkennen von nicht gepunkteten relativen Importen in Python?

import my_module 

Wenn Sie einen relativen Import tun, und dies funktionieren würde:

from . import my_module 

Gibt es ein Tool, das diese nicht-punktierten relativ erkennen kann Importe in meinen Code und warnen mich, damit ich sie zur punktierten Syntax aktualisieren konnte? My project hat Hunderte von Python-Modulen und ich möchte dies automatisch tun. (Möglicherweise würde ein solches Werkzeug __import__ außer Kraft setzen und die schlechten Importe entdecken, wie sie geschehen, wenn ich das Programm laufen lasse.)

Kennt jemand solches Werkzeug?

+0

2to3 sie automatisch konvertieren, da es 3 in Python obligatorisch ist - Sie möglicherweise in der Lage den entsprechenden Code aus, dass für die statische Analyse umfunktionieren. –

+3

Der entsprechende Code ist hier: http://svn.python.org/view/python/trunk/Lib/lib2to3/fixes/fix_import.py?view=markup Alternativ können Sie 2to3 nur mit diesem Fixer ausführen: '2to3 -w -f import myproject/' –

+0

@Thomas K: Es hat funktioniert, fühlen Sie sich frei, es als eine tatsächliche Antwort zu posten. –

Antwort

4

[als Antwort Reposted, weil es offenbar der Trick]

2to3 sie automatisch konvertieren, weil sie in Python 3.

Hier ist die relevant source code obligatorisch ist, wenn Sie es für Ihre Zwecke ändern möchten.

Alternativ können Sie nur 2to3 laufen mit nur diesem Fixierer: 2to3 -w -f import myproject/

0

pylint gibt Warnungen über relative Importe, zusammen mit Tonnen anderer Sachen, die aus dem einen oder anderen Grund als "schlechtes Python" betrachtet werden.

+0

Kann es tatsächlich den Unterschied zwischen lokalen Modulen und 'site-packages' Modulen ausmachen? –

+0

Ja; Es kennt sys.path und sollte die Warnungen nur für tatsächliche relative Importe ausgeben. – geoffspear

+0

Jetzt versucht, Importwarnungen wurden nicht angezeigt. –

Verwandte Themen