Найти - Пользователи
Полная версия: Ошибка при os.getlogin()
Начало » Python для экспертов » Ошибка при os.getlogin()
1
vigorouz
Хотел поковырять Fabric (http://www.nongnu.org/fab/), но при его запуске вываливалась ошибка, причём при вызове os.getlogin(). Как выяснилось появляется она не всегда, а только при запуске fab из mc (Midnight Commander). Проверил просто на python:

$ python
Python 2.5.1 (r251:54863, Jun 15 2008, 23:59:20)
[GCC 4.1.2 20070925 (Red Hat 4.1.2-33)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.getlogin()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 2] No such file or directory
>>>
Это на FC8, тоже самое и с версией 2.4.3 под FC5. Если пускать не из mc всё ок.

Это кончено не критичная проблема и можно пускать fab просто из консоли… но может у кого есть мысли по этому поводу…
slivlen
os.getlogin() - это обертка вокруг posix ф-ции getlogin(man getlogin). И она почемуто при вызове из проги, запущенной в mc ничего не возвращает, а если из консоли, то все норм. Вообщем проблема не в Python.
#include <stdio.h> 
#include <unistd.h>

int main()
{
printf(getlogin());

return 0;
}
Возможно проблема связана с тем как mc форкается и запускает проги.
bialix
mc это еще та прога… мда…
slivlen
Кстати, можно попробовать заменить os.getlogin на такой код:
import os, pwd
def custom_getlogin():
    return pwd.getpwuid(os.getuid())[0]
vigorouz
slivlen
Кстати, можно попробовать заменить os.getlogin на такой код:
Ок, спасибо за вариант, но всёже буду запускать fab из чистой консоли, чем править каждую новую версию.
vigorouz
bialix
mc это еще та прога… мда…
ага :-) но, млин, привык я к ней…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB