48

python2.6を使用していますが、今朝問題が発生しました。'module'には属性'Image'がないとのことです。これが私の入力です。初めてPIL.Imageを使用できないのはなぜですか?

>>> import PIL
>>> PIL.Image
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'Image'
>>> from PIL import Image
>>> Image
<module 'PIL.Image' from '/usr/lib/python2.6/dist-packages/PIL/Image.pyc'>
>>> PIL.Image
<module 'PIL.Image' from '/usr/lib/python2.6/dist-packages/PIL/Image.pyc'>
4

3 に答える 3

72

PIL__init__.pyは、よくあるように単なる空のスタブです。魔法のように何もインポートしません。

これを行うfrom PIL import Imageと、PIL パッケージが検索され、ファイル Image.py が検索され、それがインポートされます。あなたがそうするとき、PIL.Imageあなたは実際にPILモジュールで属性検索を行っています(明示的に何かをインポートしない限り、これは単なる空のスタブです)。

実際、モジュールをインポートしても、通常はサブモジュールはインポートされませんos.pathos モジュールは魔法なので、有名な例外です。

詳細:
イメージ モジュール

于 2012-08-11T02:59:38.960 に答える
12

あなたが私のように、受け入れられた答えが少し混乱していると感じた場合は、使用できたと断言できるからです。

import PIL
PIL.Image

以前は、これの潜在的な理由として、Python セッション内の他のコードが実行された場合from PIL import Imageimport PIL.Image、完全に異なるスコープにある場合でも にアクセスできる場合がありますPIL.Image

特に、matplotlibインポート時にそうします。だからあなたが走るなら

import matplotlib
import PIL
PIL.Image

それは動作します。ありがとう、パイソン。

誰も信用しないでください。Python を信用しないでください。を使用しimport PIL.Imageます。

于 2021-09-09T23:39:17.540 に答える
8

できるよ:

try:
    import Image
except ImportError:
    from PIL import Image

PIL の代わりに枕を使用することをお勧めします。

于 2014-07-11T06:32:22.160 に答える