ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

为什么export PYTHONPATH=$PYTHONPATH 将当前工作目录放在系统路径?

2021-11-05 14:34:43  阅读:220  来源: 互联网

标签:lib PYTHONPATH python3.7 当前工作 export usr local python3


在修改以冒号分隔的环境变量时,例如 PYTHONPATH、PATH、CPATH、MANPATH、LD_LIBRARY_PATH、PKG_CONFIG_PATH 等......其中一些变量对尾随冒号具有特殊意义,而其他变量则没有。

对于 PYTHONPATH 和 PATH,如果变量之前未设置,可以以不会意外引入尾随(或前导)冒号的方式预先(或附加)新目录:

export PYTHONPATH="/some/path${PYTHONPATH+":"}${PYTHONPATH-}"

解释:

${PYTHONPATH+":"}扩展为 :如果设置了 PYTHONPATH,无论 PYTHONPATH 是否为空。

${PYTHONPATH-}如果设置了将扩展到 PYTHONPATH 的内容,但如果未设置 PYTHONPATH,则 ${PYTHONPATH-}扩展为空 --- 就像通常的 ${PYTHONPATH} .

${PYTHONPATH-}与 ${PYTHONPATH-""} 相同意思是在未设置 PYTHONPATH 时替换 ""(无)。

推荐理由${PYTHONPATH-}在 ${PYTHONPATH}这是${PYTHONPATH-}当 PYTHONPATH 未设置且您的脚本已执行时,不会产生错误 set -u引发未设置变量的错误。

例如:

 export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.7-src.zip:$PYTHONPATH 会引入当前工作目录

[root@node02 ~]# python3 #当前目录为/root
Python 3.7.8 (default, Apr 27 2021, 13:33:25)
[GCC 7.3.1 20180303 (Red Hat 7.3.1-5)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/local/spark-2.4.3-bin-hadoop2.7/python', '/usr/local/spark-2.4.3-bin-hadoop2.7/python/lib/py4j-0.10.7-src.zip', '/root', '/usr/local/python3/lib/python37.zip', '/usr/local/python3/lib/python3.7', '/usr/local/python3/lib/python3.7/lib-dynload', '/usr/local/python3/lib/python3.7/site-packages']

export PYTHONPATH="/tmp${PYTHONPATH+":"}${PYTHONPATH-}" 不会引入当前工作目录

[root@node02 ~]# python3   #当前目录为 /root
Python 3.7.8 (default, Apr 27 2021, 13:33:25)
[GCC 7.3.1 20180303 (Red Hat 7.3.1-5)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/tmp', '/usr/local/python3/lib/python37.zip', '/usr/local/python3/lib/python3.7', '/usr/local/python3/lib/python3.7/lib-dynload', '/usr/local/python3/lib/python3.7/site-packages']

标签:lib,PYTHONPATH,python3.7,当前工作,export,usr,local,python3
来源: https://www.cnblogs.com/songyuejie/p/15513128.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有