試す
if __name__ == '__main__':
from [whatever the name of your package is] import one
else:
import one
Python 3 では、else
句の部分の構文は次のようになることに注意してください。
from .. import one
よく考えてみると、これはおそらく特定の問題を解決しないでしょう。質問を誤解していて、two.py がメイン モジュールとして実行されていると思っていましたが、そうではありません。absolute_import
また、Python 2.6 (からのインポートなし) と Python 3.x がインポートを処理する方法の違いを考慮すると、__future__
とにかく Python 2.6 に対してこれを行う必要はないと思います。
それでも、最終的に Python 3 に切り替えて、モジュールをパッケージ モジュールとパッケージ内のスタンドアロン スクリプトの両方として使用する予定がある場合は、次のようなものを保持することをお勧めします。
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
念頭に置いて。
編集:そして今、あなたの実際の問題に対する可能な解決策について。モジュールを含むディレクトリから PyLint をone
(おそらくコマンド ライン経由で) 実行するか、PyLint の実行時に次のコードをどこかに配置します。
import os
olddir = os.getcwd()
os.chdir([path_of_directory_containing_module_one])
import one
os.chdir(olddir)
基本的に、PYTHONPATH をいじる代わりに、現在の作業ディレクトリがone.py
、インポートを行うときに含まれているディレクトリであることを確認してください。
(ブライアンの答えを見ると、おそらく前のコードを に割り当てることができますがinit_hook
、それを行う場合は、彼が行ったものに追加するだけで済みますsys.path
。これは、私のソリューションよりもわずかにエレガントです。)