На моем сервере CentOS5 у меня есть и Python2.4, и 2.6 (для работы yum требуется 2.4). Я не уверен, что произошло, но внезапно система становится очень запутанной каждый раз, когда я пытаюсь запустить файл, модули которого загружены в каталог 2.4 site-packages. Я проверил PYTHONPATH / sys.path и, похоже, все было перезаписано данными среды 2.6.
Это раньше не делалось. Я просто объявил / usr / bin / python или / usr / bin / python26 в инструкции shebang в начале скрипта, и он всегда находил правильные модули просто отлично.
Есть ли способ, чтобы переменная PYTHONPATH была динамической и загружала разные пути в зависимости от того, какой интерпретатор Python запущен?
В противном случае мне придется вручную редактировать путь в каждом приложении, что выглядит как перебор.
Это началось после установки web.py (который мне, кстати, нравится).
Traceback:
Как кто-то прокомментировал ниже, я изменил shebang на #! / Usr / bin / env python для этой программы:
Traceback (most recent call last):
File "/usr/bin/linkchecker", line 24, in ?
import codecs
File "/usr/lib/python2.6/codecs.py", line 268
return (b"", 0)
^
Другой пример, пытающийся использовать yum:
Traceback (most recent call last):
File "/usr/bin/yum", line 5, in ?
import yum
File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 21, in ?
import os
File "/usr/lib/python2.6/os.py", line 758
bs = b""
^
Я заметил пару программ, не смущенных синтаксисом b "", и все они - программы, предназначенные для использования 2.4, которые по какой-то причине используют 2.6. Если я попытаюсь заставить программу использовать интерпретатор 2.6, он сможет понять этот синтаксис, но затем не сможет найти другие модули (которые находятся в каталоге 2.4 site-packages).
Я не знаю, что это за синтаксис, так как они были записаны в модули, которые я получил от sourceforge, однако они работали на прошлой неделе. Я не уверен, что изменилось.
Спасибо,
Том