从crontab运行python的问题 - “无效的Python安装”

时间:2011-03-17 22:15:50

标签: python linux ubuntu crontab

我的linux盒子上安装了python 2.7,我正在尝试通过crontab安排python脚本。该脚本在命令行中运行良好,但是当通过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 个答案:

答案 0 :(得分:3)

您可能只安装了2个版本,其中一个版本已损坏。如果你的cron只是直接调用python而不是特定路径,那么PATH可能在/usr/bin之前包含/usr/local/bin(这是典型的) - 所以在你的cron中,指定哪个要使用的python,或将/usr/bin中的现有符号和符号链接/path/to/good/python移至/usr/bin/python

编辑:从头开始,重新阅读并看到它在命令行中运行正常。 python-dev可能是要走的路。遗憾!

答案 1 :(得分:2)

您需要python2.7-dev,它会安装包含和标题。

对于Ubuntu,运行sudo apt-get install python2.7-dev进行安装。您正在运行什么Linux发行版?

答案 2 :(得分:2)

我假设在您的crontab文件中,您提供了python可执行文件的完整路径,而不仅仅依赖于具有可执行权限的she-bang。如果没有,请指出crontab文件中的完整路径python2.7,并在命令行中使用相同的完整路径,以确保您不会遇到此问题。如果您也在命令行上得到此信息,然后它可能缺少一些开发标题。 (您是否正在尝试编译类似于使用setup.py构建并尝试通过crontab执行此操作?)我试图了解哪些人需要这些头文件。因此,除了上述建议外,您最终提供的额外信息可能会进一步提供帮助。