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

Python os.getenv()在设置Windows环境变量时返回None,python,environment-variables,tweepy,twitterapi-python,Python,Environment Variables,Tweepy,Twitterapi Python,下面是使用Twippy库和TwitterAPI的Twitter机器人教程: 我设置config.py文件,并将我的Windows环境变量设置为带有所有令牌的用户变量。但是当我运行我的文件时,它会给出一个错误,因为在检索我的令牌时os.getenv()是None consumer_key = os.getenv("CONSUMER_KEY") consumer_secret = os.getenv("CONSUMER_SECRET") access_toke

下面是使用Twippy库和TwitterAPI的Twitter机器人教程:

我设置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")

在Windows终端中,我打印了这些变量,它们都是正确的。这里有我遗漏的东西吗?非常感谢您的帮助

这是一个问题,因为从另一个进程派生的进程继承了它的环境变量集。在这种情况下,需要重新启动用于启动代码的IDE。VS代码的另一种选择是使用指定的环境启动项目。这可以通过将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_值和VAR_值2将是分配给它们的字符串。

如果
os.getenv()
不起作用,可以使用decouple。只需执行
pip安装python decouple
,然后在代码中执行来自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')

这在我的情况下奏效了。希望它在您的情况下也能起作用。

当您说设置用户变量时,您是说通过gui设置用户环境变量吗?还是你用命令行?您是否启动了一个新的cmd行来运行python程序?在运行python脚本之前,您能看到值吗?@LhasaDad我在gui(系统属性窗口)中设置了用户环境变量。设置这些变量后,我可以通过运行命令行并对每个变量执行“echo”来查看我的值。但在那之后,当我运行脚本时,os.getenv()对所有变量都返回None显示您运行脚本了吗?从ide?你重启它是为了获取环境变量的变化吗?@LhasaDad Ah重启它成功了!在设置变量之后,我没有重新启动VS代码,所以在设置变量并运行脚本之后,它得到了正确的值。谢谢你,我感谢你的帮助!有一种方法可以在vs代码启动时传入VAR。我会在早上发布一个答案