Pythonプロジェクトのテストや相対インポートに慣れていますが、Py3でテストしたときに問題が発生するまで、隣接モジュールからのインポートパッケージはPy2では動作しますが、Py3では動作しません
私はそうのような構造されたプロジェクトがあります。
Py2.7でscriptA
import package as _package
作品で
from scriptB import functionB
from scriptC import functionC
、しかしでPy3.5に失敗:
scriptA.py
package/__init__.py
scriptB.py
scriptC.py
と__init.py__
には、以下が含まれていますがエラー、ImportError: No module named 'scriptB'
。
package
をPy2と3の両方と互換性のある方法でインポートするにはどうすればよいですか?なぜこれは違うのですか?
私はimport .package as _package
をやってみましたが、それは(まだ... .
と..
を使用する際に考え出す何も変更していないようだ
暗黙の相対インポートを実行していると思いますが、これはPy3では使用できません。 'from __future__ import absolute_import'とタイプすると暗黙のrelが無効になります。 Py2でインポートし、Py3と同じエラーを発生させます。 @pbreachが示しているように "ドットを使う"はPy2/3互換の[explicit relative import](http://www.python.org/dev/peps/pep-0008/#imports)の例です。明示的な相対インポートまたは絶対インポートを使用してください。 – pylang