>  Q&A  >  본문

flask - 在cmd中设置了环境变量,进入python后失效如何解决?

在自学flask-mail,其中一步是从环境变量中获取邮箱帐号和密码,后来发现无法获取,在venv环境下,cmd测试如下:

set MAIL_USERNAME = 'XXXX'
set MAIL_USERNAME

会显示XXXX,表明设置成功,然后我在cmd里输入

python hello.py shell
import os
print(os.environ.get('MAIL_USERNAME'))

显示None,表明MAIL_USERNAME为空

后来通过查询,这其实是在读取系统的环境变量。而set的方法(linux下是export)是设置临时环境变量,cmd(或bash)一关闭就会丢失。但临时变量在linux似乎是允许不同的程序使用,只是bash之间相互独立,而在win下用set设置的“临时变量”,一进入python shell就用不了了,所以应该叫“普通环境变量”而不是“临时环境变量”。然而,我在系统里设置了永久的环境变量,用os.environ.get()依然无法访问到。很想知道为什么,求教,谢谢!

ringa_leeringa_lee2766일 전538

모든 응답(4)나는 대답할 것이다

  • 黄舟

    黄舟2017-04-17 17:29:10

    변수와 환경 변수는 같은 것이 아니라는 점을 먼저 이해해야 합니다.
    세트별로 설정된 변수는 다른 프로세스에 적용되지 않습니다.

    python os.putenv() 왜 안되는지 모르겠습니다.
    인터넷에서 기사를 보고 직접 바꾸자고 제안했습니다

    으아아아

    os.environ은 임시 변수도 생성합니다.

    batch-cn은 Bathome에서 제작한 좋은 명령 도구 패키지 관리자입니다.

    타사 명령 도구를 다운로드하고 이러한 도구를 사용하여 시스템 변수 setx.ezxe, conset.exe를 수정합니다
    http://batch-cn.qiniudn.com/tool/setx.exe

    하나는 레지스트리를 일괄 변경하고 다시 시작하는 것이고, 다른 하나는 WMIC를 직접 검색하여 일괄 조정하는 것입니다.

    위의 세 가지 방법을 공통적으로 활용해야 합니다.

    Rapid Environment Editor는 매우 훌륭한 환경 변수 관리 도구입니다.
    명령줄을 통해 환경 변수를 백업하고 가져오고 수정할 수도 있습니다.

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:29:10

    내 컴퓨터 환경 변수에서 수동으로 설정해야 적용됩니다. 설정된 모드 설정은 현재 명령 창에만 유효합니다. 이 설정은 명령 창을 닫으면 사라집니다.

    회신하다
    0
  • 阿神

    阿神2017-04-17 17:29:10

    ~/.vimrc를 찾아서 수정한 다음 소스를 지정하세요. 특히 Baidu~~set에서는 현재 창에만 일시적으로 적용됩니다.

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-17 17:29:10

    이름이 같나요? 질문의 이름이 다릅니다

    회신하다
    0
  • 취소회신하다