设置 Windows 环境变量时 Python os.getenv() 返回 None

Han*_*nal 10 python environment-variables tweepy twitterapi-python

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

我设置了 config.py 文件,并将 Windows 环境变量设置为带有所有令牌的用户变量。但是当我运行我的文件时,它会给出错误,因为检索我的令牌时 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")
Run Code Online (Sandbox Code Playgroud)

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

小智 6

因此,这是一个问题,因为从另一个进程派生的进程会继承其环境变量集。在这种情况下,需要重新启动正在使用的启动代码的 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"}
    },
Run Code Online (Sandbox Code Playgroud)

在本例中,VAR_NAME 和 VAR_NAME2 是环境变量名称。VAR_VALUE 和 VAR_VALUE2 将是分配给它们的字符串。


小智 6

如果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')
Run Code Online (Sandbox Code Playgroud)

这对我来说有效。希望它也适用于你的情况。