ошибка импорта сайта python

когда я выполняю скрипт python, эта проблема возникает:

'import site' failed; use -v for traceback

поэтому я попробовал еще раз с опцией-v, и я могу получить эти сообщения:

'import site' failed; traceback:
Traceback (most recent call last):
  File "/usr/lib/python2.6/site.py", line 513, in <module>
    main()
  File "/usr/lib/python2.6/site.py", line 495, in main
    known_paths = addusersitepackages(known_paths)
  File "/usr/lib/python2.6/site.py", line 238, in addusersitepackages
    USER_BASE = env_base if env_base else joinuser("~", ".local")
  File "/usr/lib/python2.6/site.py", line 225, in joinuser
    return os.path.expanduser(os.path.join(*args))
  File "/usr/lib/python2.6/posixpath.py", line 256, in expanduser
    userhome = pwd.getpwuid(os.getuid()).pw_dir
KeyError: 'getpwuid(): uid not found: 65530'

Как я могу справиться с этой ситуаций?

3 ответов


похоже, он ожидает, что пользователь с id 65530 будет существовать в вашей системе, но это не так. И он получает этот идентификатор, вызывая os.getuid() который возвращает текущий идентификатор пользователя.

возможно, пользователь, который вы используете, был удален или отключен в то же время? Проверка /etc/passwd для подсказки.


обновление в свете вашего комментария: видимо /etc/passwd не существует внутри chroot-окружении. Либо вы можете попробовать сопоставить его, либо вы можете установить HOME окружающая среда переменная к чему-то разумному, как код для expanduser говорит:

    if 'HOME' not in os.environ:
        import pwd
        userhome = pwd.getpwuid(os.getuid()).pw_dir
    else:
        userhome = os.environ['HOME']

Я тоже столкнулся с этой проблемой. Немного поискав в сети, я нашел решение. Проверьте переменную среды PYTHONHOME.

попробуйте снять PYTHONHOME и попробуйте. У меня получилось.

(Ref: https://software.intel.com/en-us/forums/intel-fortran-compiler-for-linux-and-mac-os-x/topic/532383)


Если вы получаете эту ошибку от mod_wsgi на apache (в вашем журнале ошибок приложения), исправление заключается в добавлении "home=/path/to/app" в директиву WSGIDaemonProcess в вашем wsgi.conf (не имеет значения, где вы устанавливаете путь). Например...

WSGIDaemonProcess ckan_default display-name=ckan_default processes=2 threads=15 home=/usr/lib/ckan/default