对命令行和环境变量的理解

对命令行和环境变量的理解:

各个命令行工具都会到环境变量PATH下找命令。如果命令的路径在PATH下,就能运行,否则不能。

考虑一下场景:

python -m pip 可以运行,但是pip命令不能运行。
python -m pip 可以运行,是因为python.exe 的路径是在PATH下。
但是pip命令不能运行,是因为pip.exe 不在PATH中。
如果将pip.exe的路径也加入PATH中,则可以在命令行中运行pip.
我的pip路径是:C:\Users\Z\AppData\Local\Programs\Python\Python38\Scripts\pip.exe

命令行中 python -m pip 和直接运行 pip 的关系:

查看-m 选项的意思:

-m mod : run library module as a script (terminates option list)

也就是说运行python.exe, 然后给个参数 -m pip,即运行python 库 pip。
综合上面所述,python能在命令行运行,再加上参数 -m pip, 所以 pip 这个库被python调用,跑起来了。 也说明了pip是安装上了的。那剩下的就是把pip的路径加入PATH。

第二个例子:pycharm配置os.environ环境

问题:pycharm中os.environ不能读取到terminal中的系统环境变量,即pycharm中os.environ不能读取.bashrc参数

使用pycharm,无论在python console还是在module中使用os.environ返回的dict中都没有~/.bashrc中的设置的变量,但是有/etc/profile中的变量配置。然而在terminal中使用python,os.environ却可以获取~/.bashrc的内容。

解决方法:

在~/.bashrc中设置的系统环境只能在terminal shell下运行spark程序才有效,因为.bashrc is only read for interactive shells.

如果要在当前用户整个系统中都有效(包括pycharm等等IDE),就应该将系统环境变量设置在~/.profile文件中。如果是设置所有用户整个系统,修改/etc/profile或者/etc/environment吧。

第三个例子

alias 命令不会产生一个新定义的环境变量
比如:在~/.bashrc 添加 alias his = history, 是不会产生新的变量 his 的。而是应该通过 export his=history 来添加环境变量。
本人因为误以为设置了 alias ,环境中就应该有这个变量,而导致脚本中出现 his 命令是都运行失败。

参考文章:

关于环境变量,我想给初学者说
CSDN博主「-柚子皮-」的原创文章

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值