Arleigh Chang
Arleigh Chang
很經典的找不到套件錯誤。 初步處理可以先解安裝套件,再重新安裝一次。 `pip uninstall yfinance` `pip install yfinance` 重新安裝後若無法解決,嘗試直接打開cmd,然後輸入python,然後打import yfinance看看是否會成功。 如果cmd打開的python有yfinance,但您用編譯器執行的沒有,那可能還需要知道以下資訊: 1. 您是否有使用虛擬環境? 2. 您的電腦是不是有數個Python? 您的編譯器使用的是哪一個Python? 3. 您是否使用Anaconda?
Hi您好,SyntaxError問題是出在您的程式格式不對,通常是例如多了空白、少了縮排。 總之就是您的程式並未遵守程式語言規範的格式。 但我看您的圖,第一張我看不到,因為只有.jp,檔名錯誤。 第二張就是剛剛提到的SyntaxError問題,但是我看到有一個叫做yfinance.py的檔案,這支是先前我們說最好移除的那支嗎? 第三張看起來沒有任何問題,我猜測是第三張是程式,第二張是執行結果? 但從第二張的執行報錯來看,程式內應該有個except AttributeError ,但我沒有在任何一張圖上看到有這支程式。 我推測問題是您的程式import yfinance,但其實不是import到套件的yfinance,而是import到先前建議您刪除的,您自己創建的yfinance.py。
Hi您好,問題在於您的環境中有多個python,我猜是Anaconda+python? 因為您show出來的pip install 的版本是python3.7版本,但是您的編譯器使用的是3.8.5版本的python。 您的套件都裝在python3.7那裡,但是使用上卻是3.8.5,理所當然無法讀取到套件。 若是您確定您有安裝過Anaconda,且未來也決定使用Anaconda的話,嘗試用conda來裝套件。 `conda install yfinance`
感謝您的回報,我剛剛去看了,這個更新的幅度也太巨大了。 沒想到好幾年沒重大更新的Yahoo竟然在這個時間點更新,請先跳過跟Yahoo有關的爬蟲環節,預計9/29之前我會找時間重寫一支抓新聞的程式並寫上教學註解再發布。 感激不盡 !
已更新因應新版Yahoo新聞爬蟲,請參閱[yahoo_news_2.py](https://github.com/arleigh418/python-and-Taiwan-stock-market/blob/main/Trading%20Strategy_EX/Chapter2/yahoo_news_2.py) 再次感謝您的告知,有任何問題歡迎提出討論哦~
Hi 您好,以下答覆您提出的問題: 1. 2-46說明您應創建一個test.py來引用函數stock_price。函數(def) 直接執行並不會有效果,他需要您去call他並傳入規定的參數。所以2-47~2-48才會有創建一個供您嘗試的test.py來引用看看函數。如果您引用不成功,可以貼上錯誤訊息供參考。test.py沒有附上的原因是,在書中test.py如他的命名,是拿來測試主程式或函數的,若是附上了,整個架構會雜亂無章,平白多出數十支沒什麼意義的test.py。 2. 在首頁中我們有說明此情況,因yahoo news的網頁改版,所以失效,因此我做了一個替代方案因應新的網站。不過該章節您仍然可以參考參考,因為方法基本上就是那幾個。 附上更新後的說明: [https://github.com/arleigh418/python-and-Taiwan-stock-market#yahoo%E8%82%A1%E5%B8%82%E7%B6%B2%E7%AB%99%E6%9B%B4%E6%96%B0](https://github.com/arleigh418/python-and-Taiwan-stock-market#yahoo%E8%82%A1%E5%B8%82%E7%B6%B2%E7%AB%99%E6%9B%B4%E6%96%B0)
Hi 您好,如同先前說明,那兩只程式的寫法是函數(def),單獨執行函數不會有結果,函數是一項工具,您得要拿起來用,才有結果。例如您在1.py中有一個函數: def test() ,那您得去引用這個函數,x = test() ,才會運行到那個函數。
Hi 您好,以下範例。 假設您的函數yahoo_news() 是在 tool.py裡面。 兩個做法: 第一個做法: 1. 直接在tool.py,函數下方任意 `x = yahoo_news()` `print(x)` 第二個做法: 1. 同一層資料夾開一個test.py。 2. 在test.py中 `import tool` `x = tool.yahoo_news()` `print(x)` 當然以上範例,如果有值,要傳入值。 上述做法基本上就是2-46下半部到2-48講述內容與程式。 如果還有問題歡迎再提出!
Hi 您好, 錯誤訊息向您表示了, 他並沒有找到html_data這一個變數,尚未被定義. 這意味著您的print(html_data)應該在宣告html_data變數之前,所以導致錯誤. 程式是一行行執行下去的, 您必須先賦予html_data值,如: `html_data = requests.get("[https://isin.twse.com.tw/isin/C_public.jsp?strMode=2",headers=headers](https://isin.twse.com.tw/isin/C_public.jsp?strMode=2%22,headers=headers))` 才可以將它print出來看. `print(html_data)` 否則將會跳出您所貼出的錯誤.
不好意思, 看到您的截圖才完全明白, 是我漏看了, 原因應是您的requests套件沒有裝好. 這得看您的requests套件是裝在虛擬環境內, 還是原生環境內. 我初步判斷您應該是裝在虛擬環境內,但是用vscode的快捷執行他沒有吃到虛擬環境,導致找不到虛擬環境. 建議可以嘗試三個解: 1. 將stock_list.py或任何py程式搬出虛擬環境的資料夾, 不要將程式放在ENV資料夾裡面, 跟ENV資料夾擺在同一層後再執行 2. 使用cmd來執行, cd到目標虛擬環境,啟動後執行程式. 3. 想使用vscode執行,比較專業的做法,透過VSCODE設定去指定執行環境,步驟如下: a. 按Ctrl+Shift+P , 此時應出現一個輸入框 b. 輸入python select interpreter , 之後您可以看看選擇列中有沒有您的虛擬環境, 如果沒有, 可以選擇新增路徑,路徑是虛擬 環境資料夾中的Scripts資料夾裡的python.exe...