Linux中PATH、PYTHONPAT、sys.path小结

一、系统环境变量

1.查看系统环境变量

1.env查询显示所有的环境变量

env是一个外部命令,程序文件/bin/env,用于列出所有环境变量及其赋值。

2.echo显示文字,打印文字

例如:显示环境变量的值HOME

echo $HOME

3.set显示本地变量,显示当前shell的变量,包括当前用户的变量

2.设置系统环境变量

1)设置临时系统环境变量

  • export:设置环境变量

例如:设置一个新的环境变量WELCOME

export WELCOME="Hello!"
export $WELCOME
Hello!

单独使用时和 env一样,列出所有环境变量

2)设置永久环境变量

  • 修改profile文件
gedit /root/.bashrc

加入

export PATH="$PATH:/xx/xx/

当权限不足时,注意使用sudo 命令

  • 修改.bashrc文件
gedit  /etc/profile

加入

export PATH="$PATH:/xx/xx/

“PATH=$ PATH:路径1:路径2:…:路径n”,意思是可执行文件的路径包括原先设定的路径,也包括从“路径1”到“路径n”的所有路径。当用户输入一个一串字符并按回车后,shell会依次在这些路径里找对应的可执行文件并交给系统核心执行。那个“$ PATH”表示原先设定的路径仍然有效,注意不要漏掉。某些软件可能还有“PATH”以外类型的环境变量需要添加,但方法与此相同,并且也需要注意“$”。

二、PYTHONPATH

在这里插入图片描述
关于PYTHONPATH的官方文档说明:
Augment the default search path for module files. The format is the same as the shell’s PATH: one or more directory pathnames separated by os.pathsep (e.g. colons on Unix or semicolons on Windows). Non-existent directories are silently ignored.

官网链接:https://docs.python.org/2/using/cmdline.html#envvar-PYTHONPATH

1.查看 PYTHONPATH

python
import sys
sys.path

python path的作用:Python搜索路径,默认我们import的模块都会从PYTHONPATH里面寻找。

如果我们使用 PYTHONPATH 中的 modules,那么在运行 python 前,就要把 path 加到 os.environ[‘PYTHONPATH’],在运行 python 后再加,那些模块不能直接被导入

python对import的搜索顺序是
1、先扫描当前所在目录
2、找$PYTHONPATH

3、如果没有,linux下会找默认路径 /usr/local/lib/python/ 所以你没有配置,一些python系统自己的还是能找到的

2.设置PYTHONPATH

1)设置临时PYTHONPATH

在命令窗口中添加路径

 export PYTHONPATH=$PYTHONPATH:/xxxx/xxxx

例如,我们在使用facenet-master时,需要将src的路径到环境PYTHONPATH中
在定位到facenet-master文件夹后,

 export PYTHONPATH=$(pwd)/src

pwd :输出当前目录的命令
随即进行查看

在这里插入图片描述
我们看到在第一个路径已经出现了刚才添加的临时变量,可以供我们运行src下的脚本
当我们另外打开终端,进行对比
在这里插入图片描述

充分说明了利用 export 添加的只是临时变量,并放在了最前面

3)设置永久PYTHONPATH

  • 在python 中添加

使用 sys

import sys
sys.path
sys.path.append('/xx/xx')

  • 建立xx_model.pth文件
    例如上例,我们打开
    在anaconda安装目录下的site-packages文件夹下建立一个facenet_model.pth文件

在这里插入图片描述

然后在终端查看

在这里插入图片描述
这里我们同时打开两个环境的终端,看到只在添加facenet_model.pth文件
的环境下显示变量,并追加到了最后
我们看到在查看和添加时,我们都使用了sys,那么什么是sys呢?

三、sys.path

官方文档说明:A list of strings that specifies the search path for modules. Initialized from the environment variable PYTHONPATH, plus an installation-dependent default.

sys.path 初始化的时候有两部分:os.environ[‘PYTHONPATH’] 和 默认的安装依赖的一些路径(例如 python 安装的根目录 和 pythonxx.zip)

sys.path 的作用:

  1. 与 PYTHONPATH 不同,sys.path 可以在 python 运行后添加我们的 module path,然后直接
    import,应该说python只搜索 sys.path 中的 modules,不搜索
  2. 我们可以通过 os.environ['PYTHONPATH'] 来传递我们的 module path
  3. 我们可以给 python 添加自定义的 module path,让 python 在运行的时候自动加到 sys.path 中,方法是 在 /Lib/site-packages/ 中添加 *.pth 文件,在文件里面加上 module
    path

因为sys.path是一个列表,存储了系统的路径值,如果需要增加一个路径,直接使用列表的append方法,添加一个路径即可,参考官方文档
在这里插入图片描述

四、关于环境变量的其他问题

1.PATH的作用以及为什么能找到指定的python
2. PYTHONHOME和PYTHONPATH的区别
3.profile和bashrc的区别
参考博客:
1.https://www.cnblogs.com/ibingshan/p/10783810.html
2.https://zhidao.baidu.com/question/183680044181428844.html
3.https://www.cnblogs.com/amboyna/archive/2008/03/08/1096024.html

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值