2017-02-08 5 views
1

私はPythonを学んでいます。ファイルの名前によってPythonプログラムが例外をスローするのはなぜですか?

私は、このファイルcsv2.pyに名前を付けて呼び出す場合、私は、次の内容

import datetime as dt 
import matplotlib.pyplot as plt 
from matplotlib import style 
import pandas as pd 
import pandas_datareader.data as web 

でファイルを持っている:

python csv2.py 

それはに動作します...。私は、このファイルcsv.pyに名前を付けて実行した場合でも:

python csv.py 

それは、この例外をトリガ:

C:\Git\algotrading [master ≡ +3 ~0 -0 !]> python csv.py 
Traceback (most recent call last): 
    File "csv.py", line 2, in <module> 
    import matplotlib.pyplot as plt 
    File "C:\Users\andrerpena\AppData\Local\Programs\Python\Python35-32\lib\site-packages\matplotlib\pyplot.py", line 29, in <module> 
    import matplotlib.colorbar 
    File "C:\Users\andrerpena\AppData\Local\Programs\Python\Python35-32\lib\site-packages\matplotlib\colorbar.py", line 34, in <module> 
    import matplotlib.collections as collections 
    File "C:\Users\andrerpena\AppData\Local\Programs\Python\Python35-32\lib\site-packages\matplotlib\collections.py", line 36, in <module> 
    import matplotlib.mlab as mlab 
    File "C:\Users\andrerpena\AppData\Local\Programs\Python\Python35-32\lib\site-packages\matplotlib\mlab.py", line 172, in <module> 
    import csv 
    File "C:\Git\algotrading\csv.py", line 2, in <module> 
    import matplotlib.pyplot as plt 
AttributeError: module 'matplotlib' has no attribute 'pyplot' 

それは問題を把握するために40分のように私を取りました。私の言うことです...問題を理解するには、ファイルの名前と関係があります。

どうしてですか?

+5

'csv'は' matplotlib'がインポートしようとするPythonパッケージに含まれている標準モジュールです。標準モジュールをインポートするのではなく、あなたの*ファイルをインポートしています – Suever

+1

'csv'は標準のPythonモジュールです。あなたのファイル 'csv.py'を呼び出さないで、別の名前を付けてください。 – DyZ

+0

ありがとうございます。私はちょうど学んでいます。私はそれを知らなかった。 –

答えて

2

matplotlib.pyplotにはさまざまなインポートが必要ですが、 "import csv"を呼び出すmlab.pyが必要です。これはcsvという名前のファイルを見つけるはずですが、ファイル名をcsv.pyに変更したため、そのファイルをインポートしようとしています。必要なインポートを上書きし、matplotlib.pyplotのインポートを中止します。

1

csv.pyは、Pythonに組み込まれているため、制限されています。

Pythonインタプリタを実行してimport csvを試してみると、新しいものをダウンロードする必要はありません。

関連する問題