1. <legend id='Yk9oN'><style id='Yk9oN'><dir id='Yk9oN'><q id='Yk9oN'></q></dir></style></legend>

    1. <tfoot id='Yk9oN'></tfoot>

    2. <small id='Yk9oN'></small><noframes id='Yk9oN'>

      <i id='Yk9oN'><tr id='Yk9oN'><dt id='Yk9oN'><q id='Yk9oN'><span id='Yk9oN'><b id='Yk9oN'><form id='Yk9oN'><ins id='Yk9oN'></ins><ul id='Yk9oN'></ul><sub id='Yk9oN'></sub></form><legend id='Yk9oN'></legend><bdo id='Yk9oN'><pre id='Yk9oN'><center id='Yk9oN'></center></pre></bdo></b><th id='Yk9oN'></th></span></q></dt></tr></i><div id='Yk9oN'><tfoot id='Yk9oN'></tfoot><dl id='Yk9oN'><fieldset id='Yk9oN'></fieldset></dl></div>

      • <bdo id='Yk9oN'></bdo><ul id='Yk9oN'></ul>

    3. python - os.getenv 和 os.environ 看不到我的 bash shell 的环境变量

      时间:2023-07-04

      <small id='tYzAy'></small><noframes id='tYzAy'>

      <tfoot id='tYzAy'></tfoot><legend id='tYzAy'><style id='tYzAy'><dir id='tYzAy'><q id='tYzAy'></q></dir></style></legend>
          <tbody id='tYzAy'></tbody>

        • <i id='tYzAy'><tr id='tYzAy'><dt id='tYzAy'><q id='tYzAy'><span id='tYzAy'><b id='tYzAy'><form id='tYzAy'><ins id='tYzAy'></ins><ul id='tYzAy'></ul><sub id='tYzAy'></sub></form><legend id='tYzAy'></legend><bdo id='tYzAy'><pre id='tYzAy'><center id='tYzAy'></center></pre></bdo></b><th id='tYzAy'></th></span></q></dt></tr></i><div id='tYzAy'><tfoot id='tYzAy'></tfoot><dl id='tYzAy'><fieldset id='tYzAy'></fieldset></dl></div>
            • <bdo id='tYzAy'></bdo><ul id='tYzAy'></ul>

                本文介绍了python - os.getenv 和 os.environ 看不到我的 bash shell 的环境变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                我在 ubuntu 13.04,bash,python2.7.4

                I am on ubuntu 13.04, bash, python2.7.4

                解释器看不到我设置的变量.

                这是一个例子:

                $ echo $A
                5
                $ python -c 'import os; print os.getenv( "A" )'
                None
                $ python -c 'import os; print os.environ[ "A" ]'
                Traceback (most recent call last):
                  File "<string>", line 1, in <module>
                  File "/usr/lib/python2.7/UserDict.py", line 23, in __getitem__
                    raise KeyError(key)
                KeyError: 'A'
                

                但是 PATH 变量一切正常:

                But everything works fine with the PATH variable:

                $ echo $PATH 
                /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
                $ python -c 'import os; print os.getenv("PATH")'
                /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
                

                它会注意到 PATH 的变化:

                And it notices changes in PATH:

                $ PATH="/home/alex/tests/:$PATH"
                $ echo $PATH 
                /home/alex/tests/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
                $ python -c 'import os; print os.getenv("PATH")'
                /home/alex/tests/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
                

                可能出了什么问题?

                PS 使用 $PYTHONPATH 时出现问题:

                PS the problem comes when using $PYTHONPATH:

                $ python -c 'import os; print os.getenv("PYTHONPATH")'
                None
                

                推荐答案

                啊哈!解决方法很简单!

                Aha! the solution is simple!

                我用普通的 $ A=5 命令设置变量;当你使用 $ export B="foo" 一切都很好.

                I was setting variables with plain $ A=5 command; when you use $ export B="foo" everything is fine.

                那是 because export 使变量可用于子进程:

                That is because export makes the variable available to sub-processes:

                • 它在 shell 中创建一个变量
                • 导出到shell环境中
                • 环境被传递给 shell 的子进程.

                Plain $ A="foo" 只是在 shell 中创建变量,不对环境做任何事情.

                Plain $ A="foo" just creates variables in the shell and doesn't do anything with the environment.

                从 shell 调用的解释器从父 shell 获取它的环境.所以真的应该先将变量导出到环境中.

                The interpreter called from the shell obtains its environment from the parent -- the shell. So really the variable should be exported into the environment before.

                这篇关于python - os.getenv 和 os.environ 看不到我的 bash shell 的环境变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                上一篇:subprocess.call 环境变量 下一篇:如何在 Amazon Elastic Beanstalk (Python) 中设置环境变量

                相关文章

              1. <legend id='Gvnwm'><style id='Gvnwm'><dir id='Gvnwm'><q id='Gvnwm'></q></dir></style></legend>

                  <i id='Gvnwm'><tr id='Gvnwm'><dt id='Gvnwm'><q id='Gvnwm'><span id='Gvnwm'><b id='Gvnwm'><form id='Gvnwm'><ins id='Gvnwm'></ins><ul id='Gvnwm'></ul><sub id='Gvnwm'></sub></form><legend id='Gvnwm'></legend><bdo id='Gvnwm'><pre id='Gvnwm'><center id='Gvnwm'></center></pre></bdo></b><th id='Gvnwm'></th></span></q></dt></tr></i><div id='Gvnwm'><tfoot id='Gvnwm'></tfoot><dl id='Gvnwm'><fieldset id='Gvnwm'></fieldset></dl></div>
                  <tfoot id='Gvnwm'></tfoot>

                  <small id='Gvnwm'></small><noframes id='Gvnwm'>

                    <bdo id='Gvnwm'></bdo><ul id='Gvnwm'></ul>