2010-12-20 2 views
6

このような輸入品に使用する悪いのPythonと考えられています:あなたは相対的な輸入を行っているし、これがうまくいくときPythonでドットでない相対インポートを検出するツールはありますか?

import my_module 

を:

from . import my_module 

は、これらの非点線の相対を検出することができるツールがあります私のコードにインポートして警告して、点線の構文に更新することができますか? My projectには何百ものPythonモジュールがあり、私はこれを自動的にしたいと思います。 (おそらく、そのようなツールは__import__を無効にし、プログラムを実行するときに悪いインポートを検出するでしょう)

誰もこのツールを知っていますか?

+0

2to3は、自動的に、それらを変換します - あなたは、静的解析のためにそれから該当するコードを再利用することができるかもしれません。 –

+3

関連するコードは次のとおりです:http://svn.python.org/view/python/trunk/Lib/lib2to3/fixes/fix_import.py?view=markupまた、2to3をそのフィクサーだけで実行することもできます: '2to3 -w -f import myproject/' –

+0

@Thomas K:実際の答えとして投稿しました。 –

答えて

4

はここrelevant source codeです。

代わりに、あなただけのだけが定着して2to3はを実行できます。これは、Python 3に義務だから2to3 -w -f import myproject/

0

pylintは、「Bad Python」と考えられている他の多くのものとともに、相対的なインポートに関する警告を表示します。あなたの目的のためにそれを変更したい場合には、Python 3に

義務だから

2to3は自動的に、それらを変換します[それは明らかにトリックはなかったので、答えとして再掲]

+0

実際にローカルモジュールと 'site-packages'モジュールの違いを伝えることはできますか? –

+0

はい。 sys.pathを認識しており、実際の相対的なインポートに対してのみ警告を出すべきです。 – geoffspear

+0

今試しましたが、インポートの警告が表示されませんでした。 –

関連する問題