Проблема запуска Python из crontab - «неверная установка Python» - PullRequest
6 голосов
/ 18 марта 2011

На моем Linux-компьютере установлен python 2.7, и я пытаюсь запланировать скрипт на python через crontab.Сценарий отлично работает из командной строки, однако при запуске через cron я получаю:

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site.py", line 553, in <module>
    main()
  File "/usr/local/lib/python2.7/site.py", line 535, in main
    known_paths = addusersitepackages(known_paths)
  File "/usr/local/lib/python2.7/site.py", line 268, in addusersitepackages
    user_site = getusersitepackages()
  File "/usr/local/lib/python2.7/site.py", line 243, in getusersitepackages
    user_base = getuserbase() # this will also set USER_BASE
  File "/usr/local/lib/python2.7/site.py", line 233, in getuserbase
    USER_BASE = get_config_var('userbase')
  File "/usr/local/lib/python2.7/sysconfig.py", line 535, in get_config_var
    return get_config_vars().get(name)
  File "/usr/local/lib/python2.7/sysconfig.py", line 434, in get_config_vars
    _init_posix(_CONFIG_VARS)
  File "/usr/local/lib/python2.7/sysconfig.py", line 298, in _init_posix
    raise IOError(msg)
IOError: invalid Python installation: unable to open /usr/include/python2.7/pyconfig.h (No such file or directory)

Я вижу, что /usr/include/python2.7 не существует, но /usr/local/include/python2.7/ существует.Я сделал ошибку при установке python?

Ответы [ 3 ]

3 голосов
/ 18 марта 2011

Вы, вероятно, просто установили 2 версии, одна из которых не работает. Если ваш cron просто вызывает python вместо определенного пути, ваш PATH, вероятно, содержит /usr/bin до /usr/local/bin (что типично) - поэтому в вашем cron укажите, какой Python использовать, или удалите существующий один в /usr/bin и символическая ссылка /path/to/good/python до /usr/bin/python.

Редактировать: поцарапайте это, просто перечитайте и увидите, что все работает нормально из командной строки python-dev это, вероятно, путь. Извините!

2 голосов
/ 18 марта 2011

Я предполагаю, что в вашем файле crontab вы указываете полный путь к исполняемому файлу python, а не просто полагаетесь на she-bang с исполняемыми разрешениями.Если нет, укажите точку полного пути python2.7 в файле crontab, а также используйте тот же полный путь в командной строке, чтобы убедиться, что у вас нет этой проблемы.тогда, вероятно, отсутствуют некоторые заголовки разработки.(Вы пытаетесь скомпилировать что-то вроде использования setup.py build и пытаетесь сделать это через crontab?) Я пытаюсь понять, где нужны эти заголовки.Таким образом, помимо приведенного выше предложения, дополнительная информация от вашей стороны, конечно, может помочь в дальнейшем.

2 голосов
/ 18 марта 2011

Вам нужен python2.7-dev, который устанавливает include и заголовки.

Для Ubuntu вы запускаете sudo apt-get install python2.7-dev для его установки.Какой дистрибутив Linux вы используете?

...