环境变量:PYTHONPATH

大家在编写模块的时候,总会遇到这么一个问题:把模块放到安装目录下的Lib目录里面就可以正常使用了,可是过了几天重装了Python,自己写的模块也没了,然后就是感觉身体被掏空,心情极度难受,精神非常崩溃,毕竟自己辛辛苦苦写的库没了。

要想防止这种情况发生,唯有备份!但是我们来设想一个情况,你的Python装了好多个库,自己又写了好多库,因为磁盘空间有限,自己写的库只能放在另一个盘里面了。遇到这种情况有些人会想到使用虚拟环境,虚拟环境的切换可是相当繁琐的,而且虚拟环境无法和真实环境绑定在一起!

既不用虚拟环境,也不能把模块放在相应的目录下,解释器就会找不到啊!怎么办?确实找不到,至于为什么?我首先要介绍一下sys模块的path变量,如图所示。

这个变量是一个list,里面的每一个元素都是字符串,其实观察字符串的内容,大家能够发现字符串就是路径,第一个空字符串表示当前路径,sys.path就是告诉python解释器去它里面所用的路径下寻找模块。现在假设现有的这些路径因为某种原因不能往里面塞东西了,需要另外一个路径,该怎么办?有些人会把模块放在当前项目所在的路径,这么做只能对当前项目起作用,如果另一个项目也需要用这个项目里面的模块,就需要把模块复制过去,这样就会有大量的模块重复;有些人会想得很简单,既然是一个列表,append新路径绝对没问题!确实没问题,但这样只能临时修改sys.path!(重新启动就会失效)我想要永久性的的告诉解释器我自己定义的路径该怎么做呢?!这就需要使用环境变量PYTHONPATH。windows添加环境变量非常容易,在此我就不做演示了。环境变量添加完成后如图所示。

变量的值不一定要和我一样,但变量名一定要和我一样!我这里变量的值是D:\Python\Lib,就是告诉解释器要去D盘下的Python目录下的Lib目录中查找。注意:如果创建或修改环境变量PYTHONPATH之后,sys.path也会发生变化,永久性变化!目前的sys.path的结果如图所示。

大家可以看到D:\Python\Lib已经在其中了。既然环境变量设置了,大家第一个反应就是到底设置的环境变量有没有起作用。这种问题编写一个简单的模块测试一下就知道了,编写模块如图所示。

为了方便测试,模块里面就只有一个简单的函数。在测试之前,首先要去检查一下,看看有没有模块重名。我保证,我这里绝对没有。实际上检查就是去sys.path所列的每个路径进行检查就行,要确保遍历之后只有一个名为hello的模块。

然后就是测试,测试过程非常简单,如图所示。

分析测试结果发现没有问题。最后再扯一点关于设置PYTHONPATH环境变量的其他原因,其实我刚开始说的磁盘空间不足的情况比较少见,但是这并不意味着使用PYTHONPATH环境变量很少见,我们来看下面一种情况。假设Python是系统管理员安装的,而你是一个普通用户,你也不知道管理员账号密码,你只能用python,不能修改python的安装目录下的内容,这个时候PYTHONPATH环境变量就发挥作用了!我们可以发现,使用PYTHONPATH环境变量可以更好地管理我们自己编写的模块,做到不丢失,不重复,存放路径自由!

原文发布于微信公众号 - 小陈学Python(gh_a29b1ed16571)

原文发表时间:2018-10-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券