【问题标题】:Updated environment variable but os.getenv() keeps returning None [closed]更新了环境变量,但 os.getenv() 不断返回 None [关闭]
【发布时间】:2017-04-05 07:48:49
【问题描述】:

我似乎无法让我的代码响应自定义环境变量,因此我编写了一段代码来测试它。 getenv 没有将我在 BASH 中设置的环境变量拉到我的 python 代码中。您可以提供的任何帮助将不胜感激。

$ FRUSTRATION="PYTHON!!"
$ echo FRUSTRATION
PYTHON!!
export FRUSTRATION
ipython
import os
very_frustrated = os.getenv("FRUSTRATION")
print(very_frustrated)
None

【问题讨论】:

  • 这不是你运行的代码。 echo FRUSTRATION 没有前导 $ 将重复 FRUSTRATION,而不是变量的内容。猜测一下,您实际上并没有在您启动 ipython 的 shell 中使用 export FRUSTRATION
  • 无法重新创建。你是从同一个 shell 启动 ipython 吗?
  • 哪个操作系统/外壳?这看起来不像我所知道的任何 linux shell。
  • 在许多 linux shell 中,!! 是上一个命令的快捷方式。如果您只是为了强调,另一种方法会很好。
  • 在 Jupyter 笔记本中有类似的问题。只需要重新启动 Jupyter(不仅仅是内核)。

标签: python python-3.x getenv


【解决方案1】:

为我工作:

:: export FOO=boo
:: python
Python 2.7.10 (default, Jul 30 2016, 18:31:42)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.getenv('FOO')
'boo'
>>>

我的猜测是你要么忘记导出变量,要么变量拼写错误。

【讨论】:

    【解决方案2】:
    print os.environ
    

    执行此操作以查看您是否在系统中添加了环境变量。 你的python代码很好。这是设置环境变量的问题。

    【讨论】:

    • 我看不出这比只打电话给os.getenv 有什么好处。如果设置变量有问题,则此更改无济于事。
    • @tdelaney 它会显示你可以看到的变量,并且可能会看到你正在寻找的变量——除了名称可能拼写错误或类似的东西。我碰巧认为这是一个有价值的调试步骤,但这并不是问题的真正答案。
    猜你喜欢
    • 2020-12-12
    • 2012-09-04
    • 1970-01-01
    • 2018-04-17
    • 2020-12-14
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多