适用于初学者 Anaconda 和 Python 的常见问题 | Jim Zhang's blog
适用于初学者 Anaconda 和 Python 的常见问题2024-01-18

今天写这篇文章的时候不知道选什么歌好,正好今天清华大学学生电子音乐协会的 Alaemir Young 坐在俺旁边,那还不如试试他喜欢的 Peggy Gou 的 (It Goes Like) Nanana。

1 月 17 日的时候,Jim 才发现 2377 的小朋友还在用 Jim 在四年前写的资料,这是不好的,随着时间的推移,Python 和 Anaconda 都有了很大的变化,所以今天就来写一篇在 2024 年适用于初学者的 Anaconda 和 Python 的常见问题。

前言

Jim 希望大家仔细思考这个问题:都 2024 年了,使用 Python 进行数据处理和数值计算还合适吗? Jim 想,这个问题的答案应该不是肯定的。

在这里,我们只跟 Julia 比,Julia 有以下优势:

  1. Julia 专为高性能而设计。Julia 的 JIT(Just-In-Time,即时编译)编译意味着它的性能往往优于 Python,尤其是在数值和科学计算任务中,Python 在很大程度上依赖于 NumPy 等第三方库。
  2. Julia 内置了对并发和并行的支持,使编写高性能、多线程代码变得更加简单。而 Python 由于使用全局解释器锁(GIL),很难有效利用多核进行并行处理。
  3. 科学计算的易学性:Julia 的语法和函数名称通常与 MATLAB 中的相似,这使得从 MATLAB 过渡到 Julia 的用户比从 Python 过渡到 Julia 的用户更容易学习。

但是,Python 也有以下优势:

  1. 社区生态:Python 拥有更大的生态系统和更广阔的社群,尤其是网络开发、数据科学和机器学习等领域。这就意味着,如果你在这些领域工作,你可以更容易地找到 Python 的解决方案和支持。
  2. 学习曲线: Python 因其可读性和简单性而广受赞誉,因此成为初学者和快速应用程序开发的首选语言。
  3. 跨学科应用: Python 在不同领域(网络、数据科学、人工智能、自动化等)的通用性使其在各种应用中更加灵活。

所以,Jim 的建议是:如果你是初学者,那么你应该学习 Python;如果你是需要高性能数值计算的专业人士,那么你应该学习 Julia。

但是,本文还是假定读者已经选择了 Python,那么接下来就来看看在 2024 年,适用于初学者的 Anaconda 和 Python 的常见问题。

对于 Python,什么 IDE 最合适?

什么是 IDE?

首先,什么是 IDE?IDE(Integrated Development Environment,集成开发环境),是一种软件应用程序,它提供了用于软件开发的所有功能。IDE 通常包括代码编辑器、编译器、调试器和图形用户界面(GUI)构建工具。IDE 使开发人员能够更快地开发应用程序,因为它提供了所有必要的工具。

在说接下来的话之前,Jim 先进行一个自我代入:

人都是先入为主的。 —— Jim Zhang, 2024.1.20

也就是说,最开始用的东西,往往会成为自己的工作习惯。

Jim 的亲身经历

Jim 2019 年年初第一次接触 Python,最开始的时候,甚至没有在用 IDE,而是在用。。Notepad++(以下截图于 2019 年 3 月 24 日):

这是当时刚学两个月 Python 的 Jim 写的第一个 Python 工程(很怀念!那个时候用的机器还是 2016 年发布的 Lenovo Yoga 710),主要想做的事情是从西语词典上爬取西语单词的中文释义、例句、动词变位等信息,将 I/O 流通过终端进行交互。

后来,Jim 不知道什么时候发现,Visual Studio Code(以下简称 VS Code)还挺好用的。(严格意义上讲,VS Code 不是 IDE,而是代码编辑器,但是它的插件生态系统非常强大,可以通过插件的方式实现 IDE 的功能。)1

正如读者们所见,这篇文章也是在 VS Code 中写的:

Jim 用 VS Code 的原因有以下几点:

  1. 免费,而且开源。
  2. 插件生态系统非常强大,可以通过插件的方式实现 IDE 的功能。
  3. 界面简洁、美观,而且可以自定义。(写代码的时候必须要有一个好心情!)
  4. 可以在终端中进行很多操作,比如 Python、node.js 等等。
  5. 可以通过插件的方式实现很多功能,比如 Markdown 预览、LaTeX 编辑、Jupyter Notebook 预览等等。
  6. 使用 Git 进行版本控制非常方便。
  7. VS Code 相对于其他 IDE,比如 PyCharm,更加轻量级,占用的内存和存储空间更少。

至于 PyCharm

Jim 当然也用过 PyCharm,但是 Jim 觉得 PyCharm 有以下几个缺点:

  1. PyCharm 占用的内存和存储空间太大了。
  2. PyCharm 过于面向工程,对于初学者来说,学习曲线过于陡峭。
  3. PyCharm 对于初学者来说,有很多功能是用不到的,比如 Django、Flask、PyQt(写到大作业,,我不好说)等等。
  4. PyCharm 的社区支持不如 VS Code,尤其是插件生态系统。
  5. PyCharm 的界面不如 VS Code 美观(看起来很压抑)。

当然,这只是 Jim 的个人观点,如果你喜欢 PyCharm,那么你可以继续使用 PyCharm。

conda 还是 pip

其实这个标题并不准确,其实更准确的问题应该是:我需要利用 conda 工具来进行包管理或者环境管理吗?

对于初学者而言,Jim 的建议是:不需要

有关 Anaconda 及 Spyder 的常见问题

Q1:Can't Install: Failed to extract packages

具体长这样:

一般来说,这有很多种原因,比如:

  1. 安装包损坏,需要重新下载安装包。
  2. 路径过长,详见:Can’t install: Failed to Extract Packages Error @ Anaconda Cloud Community
  3. 电脑中有残留的 Anaconda 文件,需要清理干净。(说实话,这个问题是最麻烦的)
  4. Anaconda 已不支持 Windows 7,如果需要在 Windows 7 上安装 Anaconda,请参见Using Anaconda on older operating systems @ Anaconda Documentation

但是,Jim 之前说的“路径里有非 ASCII 字符”的这个判断是错误的。

Q2:Spyder 启动时崩溃

有几种情况会导致 Spyder 启动时崩溃:

  1. jupyter-core 炸掉了:a. 打开 Anaconda Prompt;b. 执行 conda install jupyter-core
  2. spyder 配置被篡改:a. 打开 Anaconda Prompt;b. 执行 spyder --reset

注释

Footnotes

  1. Visual Studio Code 通常被认为是源代码编辑器,而不是完整的集成开发环境(IDE)。不过,源代码编辑器和集成开发环境之间的区别有时会很模糊,尤其是在 VS Code 的情况下,因为它具有广泛的特性和功能。VS Code 虽然主要是一个源代码编辑器,但也提供了许多集成开发环境的典型功能,如调试功能、内置 Git 支持、智能代码自动补全(IntelliSense)、广泛的插件生态系统、集成终端等等。由于具有这些功能,很多人认为 VS Code 可与集成开发环境相媲美。另外,与 Visual Studio、Eclipse 或 IntelliJ IDEA 等传统集成开发环境相比,VS Code 的设计更轻便、模块化程度更高。