看板 Python 關於我們 聯絡資訊
不好意思 請問一下各位大大 因為剛接觸python沒有很久 目前我有從朋友那邊索取一隻python程式來學習 也安裝了跟朋友一樣的python環境(3.7) 不過在朋友那邊執行都非常正常的程式 到我這邊執行起來就會一直出現編譯錯誤 例如朋友只有在程式宣告區域變數就可以直接執行 但是我運行程式就顯示錯誤 我必需將朋友宣告變數再多宣告為全域變數才能正常執行 因為錯誤實在太多了 一直bug也不是辦法 我就在想說 為什麼朋友運行良好的正常在我這邊反而不能動 不能理解是什麼原因 是否有可能是環境設定所導致的呢? 目前有往以下幾個方面去思考 1.Python環境: python3.7 ,該import的檔案都有安裝 2.IDE開發工具:我是用PyCharm,但是朋友說他好像裝的是VS 3.執行環境:我是用Windows去開發的,朋友說他不是用MAC,那就應該是Windows吧 朋友也不知道為什麼他可以運行成功 而在我這邊就出現這麼多錯誤 所以想詢問一下各位有經驗的大大們 這種問題比較有可能是什麼原因呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.68.96.125 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1590023555.A.EB7.html
ghoster7: 開發環境一定會影響的啊哈哈,只不過我覺得你應該是pyth 05/21 09:32
ghoster7: on沒加入到windows環境變數下面的path吧 05/21 09:32
我之前在安裝Anaconda時有把path加到環境變數的選項勾選起來 另外 我自己寫的一些簡單的小程式都可以正常運行 >"< 我想應該這樣設定都沒有問題才對~所以我才不能理解為什麼朋友的程式不行 ※ 編輯: cliff3237 (203.68.96.125 臺灣), 05/21/2020 09:42:06
moodoa3583: 也許把程式跟錯誤訊息丟上來會更清楚一點 05/21 09:50
舉例來說 def getData(): mydata = (取資料動作) reutrn mydata main_data = getData() 然後程式就會回傳 UnboundLocalError: local variable 'mydata' referenced before assignment 雖然把mydata宣告為全域變數就可以解決 但是 在朋友的環境是可以直接執行的 所以才在想說自己是不是少了什麼動作 ※ 編輯: cliff3237 (203.68.96.125 臺灣), 05/21/2020 09:59:40
ghoster7: mydata沒有用if包住嗎 05/21 10:14
ghoster7: 這錯誤滿神奇的,基本上在return前一定可以在local scop 05/21 10:17
ghoster7: e找到mydata吧 05/21 10:17
沒有用if包住 所以我也在想是不是我的環境有問題 但是我自己在開發其它程式又可以正常執行 只有用朋友的程式才會有這種狀況 整個不能理解 Q_Q ※ 編輯: cliff3237 (203.68.96.125 臺灣), 05/21/2020 10:23:09
davidwales: 首先 不要急 編程有趣的地方在於不斷累積錯誤經驗 05/21 10:47
也是 我太急了 XD 看來先放輕鬆慢慢來好了 ※ 編輯: cliff3237 (203.68.96.125 臺灣), 05/21/2020 10:50:10
ddavid: getData()那個確實有點神秘,很想看取資料動作長啥樣子XD 05/21 15:05
ddavid: 環境的話,讓你朋友跑個pip freeze > requirements.txt 05/21 15:07
ddavid: 然後你開個新env去pip install -r requirements.txt 05/21 15:07
ddavid: 這樣基本上就可以拿掉package差異這個變因了 05/21 15:08
ddavid: 還跑不了才進一步看還有哪些詭異事情 05/21 15:08
ddavid: 另外就是,把區域變數宣告成全域怎麼樣都是極度不正常的, 05/21 15:09
ddavid: 這絕對不是正常的解法。 05/21 15:10
ddavid: 我懷疑是package問題,導致取資料動作那邊根本不會產結果 05/21 15:11
ddavid: ,而宣告成全域看似解決,只不過是因為前面某些code也剛好 05/21 15:13
ddavid: 用了mydata這變數,但事實上你只是不正常地拿了其他地方的 05/21 15:14
ddavid: local值,結果就是早晚會出事 05/21 15:14
謝謝大大的意見 我也感覺我加全域變數是個很不正常的事情 下班回家 我會再去看看requirements.txt是長怎麼樣的 非常感謝您 ^_^ ※ 編輯: cliff3237 (203.68.96.125 臺灣), 05/21/2020 16:11:29
s860134: 比對一下錯誤行 你描述的狀況不會存在 05/22 09:35