2017-02-08 15 views
1

我只是在學習Python。爲什麼我的Python程序根據文件的名稱拋出異常?

我有以下內容

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

一個文件,如果我命名該文件csv2.py,並呼籲:

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通過各種進口需要mlab.py調用「導入csv」。這應該找到一個名爲csv的文件(不是你的),但是因爲你已經將文件重命名爲csv.py,所以它試圖導入該文件,而不是重寫所需的導入,並搞亂了matplotlib.pyplot的導入。

1

csv.py內置於python中,因此受到限制。

如果您運行python解釋器並嘗試import csv,那麼無需下載任何新東西即可成功。

相關問題