刚接触Python,看书或者教程一般都需要先安装Anaconda这种虚拟环境工具,原因是避免不同版本的python或者包的兼容问题。我的问题是,为什么这个问题会在Python里显得突出,因为理论上其他语言也会存在这种问题。我简单的用过R和Matlab,至少这两个似乎没有Python这个问题,比如有些新的R包在旧版本的R可能不能用,升级一下R就行了,其他已有的包还是可以用的。而且一般在R和Matlab的书或教程里也不会提到虚拟环境。
为什么Python会需要虚拟环境?
相对来说,Python 更新迭代快,向后兼容性差一些。另外,有个虚拟环境稳定可复现总是好的。
G_will 感谢回复!愿闻其详。您是觉得我的问题的前提是不成立的,还是我猜测的原因没有根据(我确实是瞎猜的,因为正如我前面所说,我刚开始接触Python)?我之所以问这个问题,是因为我在考虑要不要学习Python,因为在我所在的领域,可能只需要用到非常基础的编程知识,大部分工作是由专业软件来完成的,Matlab/R好像也足够应付。因为Python非常流行,我觉得可能是未来的趋势,所以想学习一下。或者更细节一点,我希望用Python去替换Matlab。Matlab有一些基本功能我发现似乎R实现效果不太好,比如画超大的矩阵热图。Matlab很好,但是不想再用盗版了。另一方面,我发现使用Python相对于Matlab/R(正如我前面所说,我也是小白用户)太繁琐(比如一般需要设置虚拟环境),我想知道为什么会这样。如果这是语言本身的特点,那我可能觉得学习成本有点高(我学习编程感觉比较费劲,虽然Python以上手快闻名)。
做点小项目,写写脚本,感觉无论是python还是R,目前都不咋需要考虑虚拟环境的问题,如果需要的话,conda是个很好的工具
不考虑交付部署的话,是否采用虚拟环境影响不是很大。就和其他坛友说的那样,最近几年 python 相对来说迭代更快, breaking change 也多,况且还有 2 -> 3 这种完全不考向后兼容的升级,要知道有相当多的系统管理脚本都是用 python 2 写的。另外因为是通用语言,涉及到的任务类型方方面面,前后兼容性出问题的概率比较大,一开始就学习虚拟环境可以养成比较好的开发习惯。
从运维的角度来说。
- 考虑部署的话,用虚拟环境或者容器打包可以保证开发和生产环境相同,减少因为环境不同造成的问题。这一点其实对 python/R 或者其他解释型语言都是一样的。
- Linux 本身用了非常多的 python 脚本做系统管理,和系统的 python interpreter 版本有很强的绑定关系,特定版本的 OS 软件源里的 python 和相关的 package 都是限定在个别几个大版本的。因为生产环境部署的 Linux 发行版可能会长期停留在某个稳定版本,而实际业务的 python 程序可能是在更新版本的 python 下写的,或者用了更新的 package, 用虚拟环境可以和系统的 python 相互隔离。
- 因为 R 相对来说是个更专业的语言,常用的任务里涉及交付部署的场景不多,我们也几乎不会在系统管理脚本里看到。所以不做交付的话,可能会感觉在学习 R 的时候不会非常强调虚拟环境的问题。
你非常敏锐,察觉到了这个差异.如果考虑脚本的多用户跨设备的可重复性,环境的管理绕不开.至于学不学 Python,我作为成年人,向来是选择都要的.哈哈哈哈.不过学编程很害人,编程不是学出来的,是用出来的.操起键盘就是干.