huyang 刚接触Python,看书或者教程一般都需要先安装Anaconda这种虚拟环境工具,原因是避免不同版本的python或者包的兼容问题。我的问题是,为什么这个问题会在Python里显得突出,因为理论上其他语言也会存在这种问题。我简单的用过R和Matlab,至少这两个似乎没有Python这个问题,比如有些新的R包在旧版本的R可能不能用,升级一下R就行了,其他已有的包还是可以用的。而且一般在R和Matlab的书或教程里也不会提到虚拟环境。
huyang Cloud2016 感谢回复!那您觉得Python之所以“更新迭代快,向后兼容性差一些”是什么原因造成的?我猜测是不是因为Python是比较全面的编程语言,而R/Matlab这些使用的领域比较局限?还是说跟开发核心团队有关,比如R的开发团队可能更保守一些? 关于可重复性的问题,我不知道关于使用R有什么比较好的管理环境的规范或者工具?也许这个问题应该新开一个帖子。
G_will huyang 那您觉得Python之所以“更新迭代快,向后兼容性差一些”是什么原因造成的?我猜测是不是因为Python是比较全面的编程语言,而R/Matlab这些使用的领域比较局限?还是说跟开发核心团队有关,比如R的开发团队可能更保守一些? 关于可重复性的问题,我不知道关于使用R有什么比较好的管理环境的规范或者工具?也许这个问题应该新开一个帖子。 想的太多,用的太少
huyang G_will 感谢回复!愿闻其详。您是觉得我的问题的前提是不成立的,还是我猜测的原因没有根据(我确实是瞎猜的,因为正如我前面所说,我刚开始接触Python)?我之所以问这个问题,是因为我在考虑要不要学习Python,因为在我所在的领域,可能只需要用到非常基础的编程知识,大部分工作是由专业软件来完成的,Matlab/R好像也足够应付。因为Python非常流行,我觉得可能是未来的趋势,所以想学习一下。或者更细节一点,我希望用Python去替换Matlab。Matlab有一些基本功能我发现似乎R实现效果不太好,比如画超大的矩阵热图。Matlab很好,但是不想再用盗版了。另一方面,我发现使用Python相对于Matlab/R(正如我前面所说,我也是小白用户)太繁琐(比如一般需要设置虚拟环境),我想知道为什么会这样。如果这是语言本身的特点,那我可能觉得学习成本有点高(我学习编程感觉比较费劲,虽然Python以上手快闻名)。
tctcab huyang 如果只是在自己本地机器里用用的话那就不用纠结虚拟环境了。 另外楼主观察得没错, 学术界和工业界都在用python/R 替换matlab的趋势。毕竟开源免费,有更多的资源和和更好的社区支持。 简单推荐python/R的话,各有所长。 统计分析/数据挖掘/可视化类的工作R包资源丰富一点, python泛用性广一点,深度学习神经网络方面的框架比较丰富。 实际上刚开始学编程的话不必纠结工具选择问题,学会python/R之后要转其他语言是很容易的。
zakarum 不考虑交付部署的话,是否采用虚拟环境影响不是很大。就和其他坛友说的那样,最近几年 python 相对来说迭代更快, breaking change 也多,况且还有 2 -> 3 这种完全不考向后兼容的升级,要知道有相当多的系统管理脚本都是用 python 2 写的。另外因为是通用语言,涉及到的任务类型方方面面,前后兼容性出问题的概率比较大,一开始就学习虚拟环境可以养成比较好的开发习惯。 从运维的角度来说。 考虑部署的话,用虚拟环境或者容器打包可以保证开发和生产环境相同,减少因为环境不同造成的问题。这一点其实对 python/R 或者其他解释型语言都是一样的。 Linux 本身用了非常多的 python 脚本做系统管理,和系统的 python interpreter 版本有很强的绑定关系,特定版本的 OS 软件源里的 python 和相关的 package 都是限定在个别几个大版本的。因为生产环境部署的 Linux 发行版可能会长期停留在某个稳定版本,而实际业务的 python 程序可能是在更新版本的 python 下写的,或者用了更新的 package, 用虚拟环境可以和系统的 python 相互隔离。 因为 R 相对来说是个更专业的语言,常用的任务里涉及交付部署的场景不多,我们也几乎不会在系统管理脚本里看到。所以不做交付的话,可能会感觉在学习 R 的时候不会非常强调虚拟环境的问题。
CyrusYip zakarum 因为生产环境部署的 Linux 发行版可能会长期停留在某个稳定版本,而实际业务的 python 程序可能是在更新版本的 python 下写的,或者用了更新的 package, 用虚拟环境可以和系统的 python 相互隔离。 想起一个悲伤的故事。有位 Linux 用户手动编译安装 Python,把系统自带的覆盖了,于是系统坏了。
tanchangde 你非常敏锐,察觉到了这个差异.如果考虑脚本的多用户跨设备的可重复性,环境的管理绕不开.至于学不学 Python,我作为成年人,向来是选择都要的.哈哈哈哈.不过学编程很害人,编程不是学出来的,是用出来的.操起键盘就是干.