一个程序B要安装,那么它可能需要A1,A2,A3等其他程序,也就是说,B的安装,依赖其他程序。
B可以是一个程序,也可以是一个项目,这里的A其实也就是依赖包或者依赖软件。将所有的A打包,也就是项目B运行所需要的环境。
|A1---|
|A2---|--->B
|A3---|
现在,新建一个文件夹File,那么这个文件夹中包含了A1,A2,A3,B。那么此时,环境A们,项目B都在一个文件夹中,B可以运行:
A1
A2
A3
B
运行B时,B需要知道其他依赖的位置,那么B用的就是相对路径。举个例子,运行B需要用到python,把么B的运行脚本中,就需要声明A1的位置,.\A1\python.exe
。
如果此时将这个文件夹打包,那么就可以实现项目迁移,不需要在其他电脑上重新配环境。因为他们都在一整个文件夹下,B用的又都是相对路径,那么B肯定能找到其他依赖包的位置。
那么问题来了,如果又有一个项目C,它用的环境是A1,A4,A5。怎么办呢?
|A1---|
|A4---|--->C
|A5---|
当然,我们也可以新建一个文件夹,文件夹中包含了A1,A4,A5,C。也就是包含了环境和项目。C用的也是相对路径。
A1
A4
A5
C
此时是不是可以将A1单独拿出来呢?
当然可以。如果A1安装在了其他文件夹中,那么C就需要重新声明A1的位置。这个位置,也就是绝对路径,也就是环境变量。让C能用,B也能用。也就是说,环境变量的作用是告诉全部的项目和程序,A1的位置。
注意,无论是B还是C,一般都会有一个文件用来存储依赖包的位置,单独打包的环境,用的相对路径,而在其他地方的依赖包,用相对路径的写法会比较复杂,所以用的是绝对路径。如果声明了环境变量,也就是声明了该依赖包的绝对路径。
也就是说,一个项目一个环境,便于迁移,用相对路径。
但是,如果很多项目用的都是同一个依赖包,避免冗余,就可以用绝对路径。