设置Windows环境变量时,Python os.getenv返回无

问题描述

我正在关注使用Twippy库和Twitter API的Twitter机器人教程:https://realpython.com/twitter-bot-python-tweepy/

我设置了config.py文件,并将Windows环境变量设置为带有所有令牌的用户变量。但是,当我运行文件时,由于os.getenv()检索令牌时os.getenv()为None

consumer_key = os.getenv("CONSUMER_KEY")
consumer_secret = os.getenv("CONSUMER_SECRET")
access_token = os.getenv("ACCESS_TOKEN")
access_token_secret = os.getenv("ACCESS_TOKEN_SECRET")

在Windows终端中,我打印了每个变量,它们是正确的。我在这里缺少什么吗?任何帮助深表感谢!

解决方法

如果 os.getenv() 不起作用,您可以使用解耦。只需执行 pip install python-decouple,然后在代码中执行 from decouple import config,然后您就可以执行此操作:

consumer_key = config('CONSUMER_KEY')
consumer_secret = config('CONSUMER_SECRET')
access_token = config('ACCESS_TOKEN')
access_token_secret = config('ACCESS_TOKEN_SECRET')

这在我的情况下有效。希望它也适用于您的情况。

,

所以这是一个事实,即从另一个进程派生的进程会继承其环境变量集。在这种情况下,正在启动代码的使用中的IDE需要重新启动。 VS Code的替代方法是在指定的环境下启动该项目。这可以通过将env选项添加到启动配置中来完成:

   {
        "name": "Python: Current File (Integrated Terminal)","type": "python","request": "launch","program": "${file}","console": "integratedTerminal"
        "env": {"VAR_NAME": "VAR_VALUE"
                "VAR_NAME2": "VAR_VALUE2"}
    },

在这种情况下,VAR_NAME和VAR_NAME2是环境变量名称。而VAR_VALUE和VAR_VALUE2将是分配给它们的字符串。