Краткий ответ на ваш вопрос: когда вы устанавливаете пакеты из исходного кода, вы должны использовать установщик пакетов setup.py
, чтобы установить их автоматически и правильно. Этот установщик уже знает, где правильно установить модули, чтобы Python мог их найти. Чтобы использовать, просто позвоните с точным интерпретатором Python, с которым вы хотите использовать пакет.
Ускоренный курс в setup.py
. Сначала запустите его с точным исполняемым файлом Python, для которого вы хотите, чтобы пакет был доступен. Если вы хотите использовать пакет с /usr/bin/python2.5
, вы должны использовать /usr/bin/python2.5
для запуска setup.py
. Во-вторых, перейдите в каталог, где установлен пакет setup.py
. В-третьих, вы должны установить как root, так что проще всего сделать как root. В-четвертых, если вы хотите установить несколько интерпретаторов Python, вы должны запустить setup.py
с каждым, но вы должны очистить его между ними. Итак, вот что я бы сделал:
% cd /root/directory/of/untarred/source/package
% sudo su
# /path/to/first/python setup.py build install
# rm -rf build
# /path/to/second/python setup.py build install
# rm -rf build
# exit
%
Если вы устанавливаете модули вручную ... вы не должны, вы должны использовать setup.py
. (Если вы написали новый модуль, вы должны написать для него setup.py
.) Если вы должны установить вручную, вам необходимо выяснить, какой каталог следует установить для каждого Python. либо путем исследования и эксперимента, либо путем вызова тех же библиотек, которые вызывает установщик, чтобы определить правильный каталог. Установщики, использующие distutils
, звонят distutils.sysconfig.get_python_lib()
; установщики, использующие setup_tools
, ищут в setup_tools.command.easy_install.easy_install.INSTALL_SCHEMES[os.name]["install_dir"]
.
Относительно dist-packages
: У меня был разговор с сопровождающим пакета Python для Debian в начале этого года. Он реализовал это dist-packages
в бета-пакетах, собранных в Ubuntu 9.04, но в коде была ошибка PYTHONUSERBASE
, которую я опрокинул. Мы немного поговорили. IIRC причина, по которой dist-packages
была как-то связана с принуждением пользователя устанавливать пакеты в другой каталог, отличающийся от apt-get . Я, правда, не совсем понимаю мотивацию, потому что на практике и пользователь, и apt-get все еще устанавливаются в один и тот же каталог.
lib-dynload
не вещь Debian; это каталог, который сам Python устанавливает. Я считаю, что это был каталог только для разделяемых библиотек, реализующих модули. Я не уверен, что Python все еще использует его.
Наконец, я не знаю, что вы подразумеваете под "только python2.6 на самом деле работает". А как насчет этих каталогов с разными именами "не работает"?