2016-01-01 3 views
1
from os.path import expanduser 
print expanduser('~') 

в "дос" командной строки окно:питона ('~') шизофреник окна поведение

c:c:\users\myuser  <-- incorrect 

в Pythonwin сессии:

c:\users\myuser  <-- correct 

это такой же интерпретатор python 2.7.8 для обоих интерпретаторов. , вероятно, это зависит от того, запускаюсь ли я с консоли.

Если я запустил скрипт из командной строки, это будет неправильно. тот же скрипт, запущенный из pythonwin, показывает правильную версию.

Что происходит? (Я на windows7)

C:\> echo %HOMEDRIVE% 
C: 

C:\> echo %HOMEPATH% 
\Users\myuser 

C:\> echo %HOME% 
C:C:\Users\myuser   <-- aha! 

ответ

4

Что происходит здесь Python расширяется ~ к одной из следующих, с этим старшинства:

  • %HOME%
  • %USERPROFILE%
  • %HOMEDRIVE%%HOMEPATH%

Итак, на вашей машине, я su Спектр HOMEPATH определяется как c:\users\myuser вместо правильного \users\myuser. HOMEDRIVE, вероятно, правильно установлен c:

В вашем PythonWin это, вероятно, определение HOME или USERPROFILE правильно.

От Python docs:

В Windows, HOME и USERPROFILE будет использоваться, если установлен, в противном случае комбинация HOMEPATH и будет использоваться HOMEDRIVE. Начальный ~ пользователь обрабатывается путем удаления последнего компонента каталога из созданного пути пользователя, полученного выше.

+0

PS Не часть ответа, но я считаю, что некоторые из этих окружений являются сетевыми администраторами, поэтому, если вы не можете их исправить самостоятельно, я предлагаю задать вопрос на суперпользователя, например: http: // superuser.com/questions/255776/overriding-homedrive-and-homepath-as-a-windows-7-user –

+0

Да, а не exacly, @jonahGraham: на моей машине проблема была% home% variable. Благодарю. –

+0

Отлично, я рад, что помог. Вы узнали, что устраивает неправильное значение? –

Смежные вопросы