0%

Python 程序,怎么跑起来的?

作为开发者,需要一套开发环境,以便开发和调试程序。

做好的程序,如何在才能被其他人用呢?

为啥之间把代码拷贝过去无法使用呢?

程序的由来

电脑是由很多电子元件组成了,通过高电位和低电位表示两种不同的状态,然后通过大规模集成电路,将上亿的电子原件组合起来,表示更复杂的状态,表达信息。

在发展过程中,不同的厂商有不同的组织标准和实现方案,也就有不同的指挥调度命令。

将电脑上的指令组合起来,就成为了让电脑运行的程序。

程序员就是按照这些指令的规则,编写出能驱动电脑的程序。

可以看出,程序是不许符合某种电脑指令要求的,也就是用的是那种电脑的指令写的程序,就只能在那种电脑上运行。

这显然不符合发展要求,于是人们就提出了统一的编程接口,根据这些接口,设计编程语言,这样不但摆脱了具体电脑类型的束缚,而且还可以设计出更符合人类思维的编程语言。

这个过程就是程序发展的不完整的简要过程。

程序的运行

写好的程序,如何运行起来呢?

因为程序以及不再是机器能之间识别的指令集合,所以需要先对程序进行编译,让器转化为更接近机器运行的代码。

另外,程序中需要用到很多操作系统的功能,比如读取文件,进行网络访问等等,这些功能编写起来不但复杂,而且质量要求很高,不是一般程序员能搞得定的。

于是有一些公司、社区和高级程序员,将对操作系统的调用编写成模块,组件和功能块,同其他程序员使用,这就是常说的库。

当需要调用系统功能时,可以利用相应的库来实现,比如 Python 中打开一个文件的代码是:

1
file = open("text.txt", 'r', 'utf-8')

其中 open 就是 Python 中提供的调用操作系统而提高的库方法。

在程序运行之前,还需要编译这些被调用的库,这个过程被称为 链接

最后,在根据具体的电脑类型,将代码编译成可执行文件,在不同的但类型相同的电脑上,就可以运行了。

python

人生苦短,我用 Python

这是 Python 里一句著名的 Slog,之所以这么说,是因为 Python 里有大量的库,包括官方的和第三方的,从基本处理,到人工智能,应有尽有。

使用这些库,往往几行代码就可以实现复杂的功能,比如提取一个页面内容的代码:

1
2
3
4
5
import requests

response = requests.get("http://www.baidu.com")

print(response.text)

引入 requests 库,通过 get 方法,就可以获得一个页面的所有数据,而不用关注复杂的链接建立和处理过程。

随着 Python 社区的蓬勃发展,Python 的库,形成了巨大的规模,不可能在一台电脑上安装所有的库,而应该是用到什么安装什么才对。

实际上也就是这么用的,比如上面代码中用到了 requests 库,它不随 Python 环境一起安装,所以使用之前可以通过下面的命令安装:

1
pip install requests

不过问题来了,写代码时安装了一下库,将代码拿到其他机器上跑,其他机器可不一定安装了依赖的库,不就运行不了了吗?

确实是,所以需要开发环境中,安装了什么,就在要运行的环境中安装什么。

为了方便,Python 引入了一个概念,叫 —— 虚拟环境。

虚拟环境

之所以叫虚拟环境,就是相对于实际环境而起名的。

什么是实际环境呢?

当安装好 Python 之后,在命令行中,输入:

1
python -h

如果能看到大段的 Python 帮助说明,那么这个环境就是实际环境,其实叫公共环境更好,意思是任何在这个电脑上的 Python 程序都可以使用这个环境。

比如安装了 requests 库,在写一个 Python 程序照样可以用。

如果我们写了很多程序,而每种程序用到不同的库,这些库都被装在实际环境中了,当要迁移程序时,就不能方便的知道要迁移的程序,到底用了哪些库。

等迁移到其他机器上,不是少了库就是多了库。

如果能为每个程序单独创建一个环境就好了。

Python 也想到了这一点,而且提供了简单的创建方法。

创建虚拟环境

1
python -m venv .env

这段代码,就在当前目录,创建一个隐藏文件夹 .env 作为虚拟环境。

然后激活虚拟环境:

  • windows
1
.env\Scripts\activate.bat

或者 powershell 下:

1
.env\Scripts\Activate.ps1
  • Linux
1
souce .env/bin/activate

激活后,可以正常使用 pip 安装需要的组件。

完成开发打包时,将虚拟环境中的依赖导出,命令是:

1
pip freeze > requirements.txt

即,将依赖导出到 requirements.txt 文本文件中。

如何在新环境中安装呢?

将 requirements.txt 和程序一起复制到新环境中,前提是必须安装有 Python。

如有必要,创建一个虚拟环境,激活后,执行:

1
pip install -r requirements.txt

就可以安装所以依赖了,然后就可以执行程序了。

总结

程序是为人服务,所以并没有想象中那么神秘和可怕,每一步,每个设计和特性,都是在解决或者优化一个问题。

只要顺着解决问题的思路走下去,就能进入美妙的程序世界,让程序发挥作用提升效率。

今天从程序如何形成,以及如何运行的角度上,简单地梳理了一下,并说明了 Python 程序开发和迁移的方法,期望能对读者进一步理解程序有所帮助,比心!