Я установил Python 2.6.7 в $ HOME / local машины, на которой уже есть Python по умолчанию в / usr (у меня нет доступа администратора на этой машине). Python по умолчанию компилируется в 32 бита, а моя локальная установка - в 64 бита. По некоторым неизвестным причинам моя локальная библиотека Python (которую я называю встроенным интерпретатором python из программы на C) ищет модули в установке по умолчанию (неправильной).
Это результат "случайного импорта"
Traceback (most recent call last):
File "test.py", line 3, in <module>
import random
File "/tmp/work/mdorier1/local/lib/python2.6/random.py", line 45, in <module>
from math import log as _log, exp as _exp, pi as _pi, e as _e, ceil as _ceil
ImportError: /usr/lib/python2.6/lib-dynload/math.so: wrong ELF class: ELFCLASS32
Как видите, оператор импорта правильно ищет "random.py" в локальной установке Python, но оператор импорта в random.py идет в поиске math.so в неправильном месте, что заканчивается ошибкой, поскольку расположение по умолчанию имеет 32-битные модули.
Я догадался, что есть проблема с переменной окружения, и я попытался
import sys
sys.path
чтобы получить
['/tmp/work/mdorier1/local/lib/python26.zip',
'/tmp/work/mdorier1/local/lib/python2.6',
'/tmp/work/mdorier1/local/lib/python2.6/plat-linux2',
'/tmp/work/mdorier1/local/lib/python2.6/lib-tk',
'/tmp/work/mdorier1/local/lib/python2.6/lib-old',
'/usr/lib/python2.6/lib-dynload',
'/tmp/work/mdorier1/local/lib/python2.6/site-packages']
Я заметил, что один из путей действительно указывает на установку Python по умолчанию. Мои вопросы, таким образом:
- Почему этот путь отображается здесь, так как локальная установка не имеет ничего общего с установкой по умолчанию?
- Как я могу изменить это (чистым и постоянным способом)? Этот путь должен быть путем к lib-dynload в локальной установке.
Спасибо