Ubuntu 和 pycharm下设置环境变量

2019-01-24  本文已影响0人  Elvis_zhou

场景:由于pycharm需要模拟项目在docker容器中运行,现在需要给项目提供环境变量,并判断其类型。

我的第一反应是,给ubuntu设置环境变量:

  1. root设置环境变量:
vim /etc/environment
# 写入环境变量
PARENT=8
#更新
source /etc/environment

在root用户下是可以得到结果的:

echo $PARENT

pycharmterminal并不能用,keyerror
2.给用户设置环境变量

vim ~/.bashrc
# 写入环境变量
PARENT=8
#更新
source ~/.bashrc

pycharmterminal依然不能用,keyerror
3.但是我在ubuntu的终端是可以得到环境变量的


我就奇怪了,难道是我的虚拟环境的python版本不同?于是我切换了pyenv的version
pyenv versions
pyenv global 2.7.12

然而并么有什么卵用。
4.难道是pycharmterminal有问题?我又在pycharmterminal中设置了一遍
依然没有卵用
5.于是乎,我去问了大佬,大佬说,pycharm的环境变量是继承父进程的!
也就是说,子进程fock()父进程的时候环境变量就已经分配好了,也就是说只有改变父进程的环境变量,才能使得多个子进程(这里指pycharmterminalconsole)都能取到新设置的环境变量,简单点说就是,我无论怎么改变pycharm中的terminal的环境变量,在pycharmconsole里都不会有结果,因为这是pycharm的两个子进程。

  1. 解决方法:
    1.用bash去启动pycharm,确定pycharm的父进程,这样改变bash的环境变量就行了
    1. pycharm本身有设置环境变量的设置:

这种方式很简单,判断其类型:

print type(os.environ['PARENT'])

结果是string,即使输入是int,输出也是string

  1. 设置默认的环境变量(用在没有该参数程序也能正常执行时用,防止程序报错):
    a = os.environ.get('PARENTp', 333)

try except捕获异常。
以上!!!

上一篇 下一篇

猜你喜欢

热点阅读