作者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/cn.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