0

私は最近、Django1.6b1 を使用して、Django アプリケーションを Python 2.7 から Python 3.3 に移植しました。

カスタム モジュールのインポート (ユーザー、ビューなど) に対してインポート ステートメントが機能しなくなり、これらのインポートの前にドットを追加する必要がありました。なんで ?

例 :

import EmailUser #worked with python 2.7 but doesn't work with 3.3    
import .EmailUser #works    
4

2 に答える 2

4

バグではありません。Python 3 では、明示的な相対インポートが強制されます。

ドキュメントから:

相対インポートで使用できる唯一の構文はfrom .[module] import name. で始まらないすべてのインポート形式は.、絶対インポートとして解釈されます。( PEP 0328 )

また、import .EmailUserどの Python バージョンでも無効な構文です。それはする必要がありますfrom . import EmailUser

于 2013-08-07T16:36:04.417 に答える
3

これは、「絶対インポート」、つまり で始まらないインポートが原因です。は絶対であり、モジュール パスで見つける必要があります。Python 2.6、2.7 では、これをファイル単位で有効にすることができます。

from __future__ import absolute_import
于 2013-08-07T16:36:24.200 に答える