試す
if __name__ == '__main__':
from [whatever the name of your package is] import one
else:
import one
Python 3では、else
句の部分の構文は次のようになります。
from .. import one
考え直して、これはおそらくあなたの特定の問題を解決しないでしょう。私は質問を誤解し、two.pyがメインモジュールとして実行されていると思いましたが、そうではありません。また、Python 2.6(absolute_import
からのインポートなし__future__
)とPython 3.xがインポートを処理する方法の違いを考慮すると、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
念頭に置いて。
編集:そして今、あなたの実際の問題の可能な解決策のために。one
(おそらくコマンドラインを介して)モジュールを含むディレクトリからPyLintを実行するか、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
は、彼が行う追加を単に行うことができます。これは、私のソリューションよりも少しエレガントです。)