Python os.environ funciona en modo inactivo pero no en un script

Estoy trabajando en un simple script de Python (2.7.3), pero tengo que obtener la carpeta de inicio del usuario. Lo intenté:

import os home_folder = os.environ["HOME"] 

Y funciona bien cuando «KeyError: 'HOME'» este código en IDLE, pero si lo «KeyError: 'HOME'» desde el cmd, me da: «KeyError: 'HOME'»

¿Alguien puede decirme por qué? ¿Como puedó resolver esté problema?

Windows usa USERPROFILE , en lugar de HOME . Windows no tiene HOME y otros sistemas operativos no tienen un USERPROFILE , por lo que el uso de cualquiera de estas dos plataformas es independiente.

Para mantener la independencia de la plataforma, puede usar expanduser desde os.path , así:

 import os.path home_folder = os.path.expanduser('~') 

En una nota al margen, puede usar print(os.environ) para ver todas las variables de entorno a las que tendrá acceso, lo que muestra que IDLE tiene extras.

Windows no tiene variable de entorno HOME. En su lugar usa USERPROFILE. Para resolver el problema, puede definir una nueva variable “INICIO” escribiendo en su consola:

 set HOME=%USERPROFILE% 

como una copia de la variable USERPROFILE.

Puede comprobar que son idénticos escribiendo:

 echo %USERPROFILE% echo %HOME% 

Funcionará para la sesión actual.

Parece que está intentando ejecutar esto en Windows basado completamente en su “[lanzamiento] desde el cmd”. IDLE te está dando eso como una conveniencia; en Windows use USERPROFILE lugar de HOME . El %USERPROFILE% envar es el Win32 $HOME .