【问题标题】:How to set and retrieve environment variable in Python如何在 Python 中设置和检索环境变量
【发布时间】:2014-11-26 13:49:53
【问题描述】:

我需要在python中设置一个环境变量,我试试下面的命令

import os
basepath = os.putenv('CPATH','/Users/cat/doc') 
basepath = os.getenv('CPATH','/Users/cat/doc') 

当我打印变量时,它们没有设置: 打印基本路径 无

我做错了什么?

换个说法,我想创建一个基于环境变量的基本路径。我正在测试这个:

os.environ["CPATH"] = "/Users/cat/doc"
print os.environ["CPATH"]
base_path=os.getenv('C_PATH')

当我尝试打印基本路径时: 打印基本路径 它总是回来 无

【问题讨论】:

  • 什么操作系统?
  • OS X Mavericks(版本 10.9)
  • 你在使用 Flask 吗?
  • @Ofiris:我遇到了这个问题,我正在使用 Flask。 os.getenv('PATH') == os.environ('PATH') == os.environ.get('PATH') == None。有什么建议吗?

标签: python environment-variables


【解决方案1】:

试试这个。

os.environ["CPATH"] = "/Users/cat/doc"

Pythondocumentation 很清楚。

直接调用putenv()不会改变os.environ,所以最好修改os.environ。

根据文档,os.getenv() 可用于大多数版本的 Unix 和 Windows。 OS X 未列出。

使用下面的 sn-p 来检索值。

value = os.environ.get('CPATH')

【讨论】:

  • 这样我可以打印环境变量,但是当我尝试将它归因于基本路径时,例如:base_path = os.getenv('CPATH')
  • @CatarinaCM,对不起?修改os.environ 确实会更新脚本的活动环境变量——而base_path = os.environ.get('CPATH') [如果你想要None 在未找到的情况下] 是检索的最佳实践方法。如果您看到相反的结果,请提供复制者,以便我们了解您的测试方式。
  • 按照@Charles 的建议使用os.environ.get('CPATH')
【解决方案2】:

使用os.environ:

os.environ['CPATH'] = '/Users/cat/doc'    
print os.environ['CPATH']     # /Users/cat/doc
print os.environ.get('CPATH') # /Users/cat/doc

详情请见上述link

如果平台支持 putenv() 函数,这个映射可能是 用于修改环境以及查询环境。 修改映射时会自动调用 putenv()。

注意直接调用putenv()不会改变os.environ,所以是 最好修改 os.environ。

【讨论】:

    【解决方案3】:

    在函数完成时恢复环境变量是一种很好的做法。 您可能需要类似question 中描述的modified_environ 上下文管理器来恢复环境变量。

    使用示例:

    with modified_environ(CPATH='/Users/cat/doc'):
        call_my_function()
    

    【讨论】:

      猜你喜欢
      • 2011-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-23
      • 2022-01-08
      • 1970-01-01
      相关资源
      最近更新 更多