[問題] 開發環境是否會影響程式編譯?

看板Python作者 (Cliff)時間5年前 (2020/05/21 09:12), 5年前編輯推噓6(6013)
留言19則, 5人參與, 5年前最新討論串1/1
不好意思 請問一下各位大大 因為剛接觸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

05/21 09:32, 5年前 , 1F
開發環境一定會影響的啊哈哈,只不過我覺得你應該是pyth
05/21 09:32, 1F

05/21 09:32, 5年前 , 2F
on沒加入到windows環境變數下面的path吧
05/21 09:32, 2F
我之前在安裝Anaconda時有把path加到環境變數的選項勾選起來 另外 我自己寫的一些簡單的小程式都可以正常運行 >"< 我想應該這樣設定都沒有問題才對~所以我才不能理解為什麼朋友的程式不行 ※ 編輯: cliff3237 (203.68.96.125 臺灣), 05/21/2020 09:42:06

05/21 09:50, 5年前 , 3F
也許把程式跟錯誤訊息丟上來會更清楚一點
05/21 09:50, 3F
舉例來說 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

05/21 10:14, 5年前 , 4F
mydata沒有用if包住嗎
05/21 10:14, 4F

05/21 10:17, 5年前 , 5F
這錯誤滿神奇的,基本上在return前一定可以在local scop
05/21 10:17, 5F

05/21 10:17, 5年前 , 6F
e找到mydata吧
05/21 10:17, 6F
沒有用if包住 所以我也在想是不是我的環境有問題 但是我自己在開發其它程式又可以正常執行 只有用朋友的程式才會有這種狀況 整個不能理解 Q_Q ※ 編輯: cliff3237 (203.68.96.125 臺灣), 05/21/2020 10:23:09

05/21 10:47, 5年前 , 7F
首先 不要急 編程有趣的地方在於不斷累積錯誤經驗
05/21 10:47, 7F
也是 我太急了 XD 看來先放輕鬆慢慢來好了 ※ 編輯: cliff3237 (203.68.96.125 臺灣), 05/21/2020 10:50:10

05/21 15:05, 5年前 , 8F
getData()那個確實有點神秘,很想看取資料動作長啥樣子XD
05/21 15:05, 8F

05/21 15:07, 5年前 , 9F
環境的話,讓你朋友跑個pip freeze > requirements.txt
05/21 15:07, 9F

05/21 15:07, 5年前 , 10F
然後你開個新env去pip install -r requirements.txt
05/21 15:07, 10F

05/21 15:08, 5年前 , 11F
這樣基本上就可以拿掉package差異這個變因了
05/21 15:08, 11F

05/21 15:08, 5年前 , 12F
還跑不了才進一步看還有哪些詭異事情
05/21 15:08, 12F

05/21 15:09, 5年前 , 13F
另外就是,把區域變數宣告成全域怎麼樣都是極度不正常的,
05/21 15:09, 13F

05/21 15:10, 5年前 , 14F
這絕對不是正常的解法。
05/21 15:10, 14F

05/21 15:11, 5年前 , 15F
我懷疑是package問題,導致取資料動作那邊根本不會產結果
05/21 15:11, 15F

05/21 15:13, 5年前 , 16F
,而宣告成全域看似解決,只不過是因為前面某些code也剛好
05/21 15:13, 16F

05/21 15:14, 5年前 , 17F
用了mydata這變數,但事實上你只是不正常地拿了其他地方的
05/21 15:14, 17F

05/21 15:14, 5年前 , 18F
local值,結果就是早晚會出事
05/21 15:14, 18F
謝謝大大的意見 我也感覺我加全域變數是個很不正常的事情 下班回家 我會再去看看requirements.txt是長怎麼樣的 非常感謝您 ^_^ ※ 編輯: cliff3237 (203.68.96.125 臺灣), 05/21/2020 16:11:29

05/22 09:35, 5年前 , 19F
比對一下錯誤行 你描述的狀況不會存在
05/22 09:35, 19F
文章代碼(AID): #1UnTM3wt (Python)
文章代碼(AID): #1UnTM3wt (Python)