Наличие другого пути LIBDIR для Python в Linux - PullRequest
0 голосов
/ 18 июля 2011

Я хотел бы изменить способ, которым Python 2.7 под Linux будет загружать свои модули / библиотеки из.Я попытался изменить его из файла настройки.До этого это было похоже на

BINLIBDEST=     $(LIBDIR)/python$(VERSION)
LIBDEST=        $(SCRIPTDIR)/python$(VERSION)
INCLUDEPY=      $(INCLUDEDIR)/python$(VERSION)
CONFINCLUDEPY=  $(CONFINCLUDEDIR)/python$(VERSION)
LIBP=           $(LIBDIR)/python$(VERSION)

И я попытался изменить это на это:

BINLIBDEST=     $(LIBDIR)
LIBDEST=        $(SCRIPTDIR)
INCLUDEPY=      $(INCLUDEDIR)
CONFINCLUDEPY=  $(CONFINCLUDEDIR)
LIBP=           $(LIBDIR)

В основном удаление Python%(VERSION) из пути, чтобы вместо lib / python27 он просто загружал свои модули только из папки lib .Однако даже если инициализация make и make install работает с изменениями, двоичный файл Python python или python27 не загружает модулис нового пути.Это приводит к следующему выводу:

Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
'import site' failed; use -v for traceback

Is есть способ заставить сам двоичный файл Python (если необходимо) загрузить модули из новогопуть, заданный мной, вместо пути по умолчанию " $ (LIBDIR) / python $ (VERSION) "?

Ответы [ 3 ]

1 голос
/ 18 июля 2011

Вам придется внести несколько изменений в исходный код Python и перекомпилировать, но я собираюсь предположить, что это нормально, поскольку это довольно нестандартная вещь.

Посмотрите на файл Modules/getpath.c. Шаги, которые Python выполняет для определения libdir, подробно описаны в комментариях в начале файла. Вы можете посмотреть репозиторий SVN здесь . Я думаю, вы захотите посмотреть, как используется это определение:

#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \
          EXEC_PREFIX "/lib/python" VERSION "/lib-dynload"

Я не думаю, что это будет так просто, как просто изменить его на [...] PREFIX "/lib/:" [...], но это будет что-то в этом роде.

0 голосов
/ 11 июня 2015

Я хотел бы поблагодарить carlpett: я смог установить путь поиска Python во время выполнения: изменен с lib / на lib64 / при сборке Python 2.7.10 в x86_64- my_distro-gnu-linux, используя gcc 5.1 от , модифицируя Modules / getpath.c .

Для записи я попробовал --libdir во время настройки (работает для общей библиотеки, но не для путей установки модулей python), изменив Makefile, изменив pyconfig.h, настроив $ PYTHONPATH, $ PYTHONHOME, ничего не получилось. *

Просто подробности, но make install неправильно размещает библиотеки, поэтому вам нужно сделать немного cp -af и mv самостоятельно.

СПАСИБО, КАРПЛЕТТ !!!

0 голосов
/ 02 мая 2012

Вы пытаетесь достичь чего-то, чего не делает virtualenv ?

Кажется, чтобы удовлетворить ваши требования:

"... основная идея заключалась не в работе с общесистемным Python, а в иметь отдельную, более портативную версию Python, чтобы иметь свою собственную библиотеки и модули .. "

...