作者cliff3237 (Cliff)
看板Python
標題[問題] 開發環境是否會影響程式編譯?
時間Thu May 21 09:12:33 2020
不好意思 請問一下各位大大
因為剛接觸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://webptt.com/m.aspx?n=bbs/Python/M.1590023555.A.EB7.html
1F:推 ghoster7: 開發環境一定會影響的啊哈哈,只不過我覺得你應該是pyth 05/21 09:32
2F:→ ghoster7: on沒加入到windows環境變數下面的path吧 05/21 09:32
我之前在安裝Anaconda時有把path加到環境變數的選項勾選起來
另外 我自己寫的一些簡單的小程式都可以正常運行
>"< 我想應該這樣設定都沒有問題才對~所以我才不能理解為什麼朋友的程式不行
※ 編輯: cliff3237 (203.68.96.125 臺灣), 05/21/2020 09:42:06
3F:推 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
4F:推 ghoster7: mydata沒有用if包住嗎 05/21 10:14
5F:推 ghoster7: 這錯誤滿神奇的,基本上在return前一定可以在local scop 05/21 10:17
6F:→ ghoster7: e找到mydata吧 05/21 10:17
沒有用if包住
所以我也在想是不是我的環境有問題
但是我自己在開發其它程式又可以正常執行
只有用朋友的程式才會有這種狀況
整個不能理解 Q_Q
※ 編輯: cliff3237 (203.68.96.125 臺灣), 05/21/2020 10:23:09
7F:推 davidwales: 首先 不要急 編程有趣的地方在於不斷累積錯誤經驗 05/21 10:47
也是 我太急了
XD 看來先放輕鬆慢慢來好了
※ 編輯: cliff3237 (203.68.96.125 臺灣), 05/21/2020 10:50:10
8F:推 ddavid: getData()那個確實有點神秘,很想看取資料動作長啥樣子XD 05/21 15:05
9F:→ ddavid: 環境的話,讓你朋友跑個pip freeze > requirements.txt 05/21 15:07
10F:→ ddavid: 然後你開個新env去pip install -r requirements.txt 05/21 15:07
11F:→ ddavid: 這樣基本上就可以拿掉package差異這個變因了 05/21 15:08
12F:→ ddavid: 還跑不了才進一步看還有哪些詭異事情 05/21 15:08
13F:→ ddavid: 另外就是,把區域變數宣告成全域怎麼樣都是極度不正常的, 05/21 15:09
14F:→ ddavid: 這絕對不是正常的解法。 05/21 15:10
15F:→ ddavid: 我懷疑是package問題,導致取資料動作那邊根本不會產結果 05/21 15:11
16F:→ ddavid: ,而宣告成全域看似解決,只不過是因為前面某些code也剛好 05/21 15:13
17F:→ ddavid: 用了mydata這變數,但事實上你只是不正常地拿了其他地方的 05/21 15:14
18F:→ ddavid: local值,結果就是早晚會出事 05/21 15:14
謝謝大大的意見
我也感覺我加全域變數是個很不正常的事情
下班回家 我會再去看看requirements.txt是長怎麼樣的
非常感謝您 ^_^
※ 編輯: cliff3237 (203.68.96.125 臺灣), 05/21/2020 16:11:29
19F:→ s860134: 比對一下錯誤行 你描述的狀況不會存在 05/22 09:35