liujie
liujie
Published on 2023-05-05 / 62 Visits
0
0

PYTHONPATH

PYTHONPATH

在Python中,PYTHONPATH是一个环境变量,用于指定Python解释器在查找模块和包时应该搜索的目录路径。当我们运行Python程序时,解释器会通过搜索PYTHONPATH中指定的路径来查找需要导入的模块和包。

PYTHONPATH环境变量的设置方式可以是以下两种:

  1. 通过命令行参数设置PYTHONPATH的值,例如:

python -m my_module --path /usr/local/lib/python3.7/site-packages
  1. 将PYTHONPATH设置在操作系统的环境变量中,例如在Linux系统中可以通过以下命令设置:

export PYTHONPATH=/usr/local/lib/python3.7/site-packages

需要注意的是,PYTHONPATH指定的路径应该是包含Python模块和包的根目录,而不是具体的模块或包的文件路径。

使用PYTHONPATH可以方便地管理Python模块和包的搜索路径,使得我们可以方便地导入自己的模块和包,并且可以避免因为模块和包的搜索路径问题导致的导入错误。


PYTHONPATH 是 python查找模块和包的路径,每导入一个模块,python解释器将依次在PYTHONPATH 下寻找

可以通过 sys.path 来查看 PYTHONPATH 的具体内容

['',

 '/opt/conda/envs/xxenv/lib/python3.7',

 '/opt/conda/envs/xxenv/lib/python3.7/lib-dynload',

 '/opt/conda/envs/xxenv/lib/python3.7/site-packages']

接下来以安装 ppdet 的安装配置来举例说明,先将内容git下来:

git clone https://github.com/PaddlePaddle/PaddleDetection

此时,导入ppdet,会报 ModuleNotFoundError

之后,将该路径 PaddleDetection 添加到 PYTHONPATH 中

# 在当前终端临时添加环境变量, 每开一个新终端要重新执行一次

export PYTHONPATH=$PYTHONPATH:/xxxx/PaddleDetection 

也可以这样持续添加,之后刷新一下环境变量即可

echo "export PYTHONPATH=$PYTHONPATH:/xxxx/PaddleDetection" >> ~/.bashrc

source  ~/.bashrc

之后再打印一下 sys.path 看看:

['',

 '/xxxx/PaddleDetection',

 '/opt/conda/envs/xxenv/lib/python3.7',

 '/opt/conda/envs/xxenv/lib/python3.7/lib-dynload',

 '/opt/conda/envs/xxenv/lib/python3.7/site-packages']

接下来,导入 ppdet

>>> import ppdet

导入成功


Comment