У меня есть собственный дистрибутив Linux, и я собираю Python 3.7.2 из исходного кода.Сборка настроена для установки в альтернативный корневой каталог, из которого она будет упакована для установки.
Этот процесс отлично работает при запуске в системе, в которой еще не установлен python3.Но когда я запускаю тот же процесс сборки на хосте, на котором есть ранее собранная копия того же пакета, убедитесь, что pip не может установить pip или setuptools в альтернативный каталог установки, поскольку находит их в самой системе.
Программное обеспечение извлекается и конфигурируется следующим образом:
mkdir -p /data/buildspace/work/python3-x86_64
/bin/tar xf /data/sources/python3/Python-3.7.2.tgz \
-C /data/buildspace/work/python3-x86_64
( cd /data/buildspace/work/python3-x86_64/Python-3.7.2 ; \
[ -f ./configure ] && CC="gcc" CXX="g++" ./configure \
--prefix=/usr --libdir=/usr/lib
--sysconfdir=/etc --bindir=/usr/bin || echo "No './configure' script")
Затем вызывается make install
с указанным DESTDIR:
make -C /data/buildspace/work/python3-x86_64/Python-3.7.2
install DESTDIR=/data/buildspace/work/python3-x86_64/root
При первоначальном построении, перед тем как система сборки имеет python3Установленный, я вижу в выводе / log сборки:
if test "xupgrade" != "xno" ; then \
case upgrade in \
upgrade) ensurepip="--upgrade" ;; \
install|*) ensurepip="" ;; \
esac; \
./python -E -m ensurepip \
$ensurepip --root=/data/buildspace/work/python3-x86_64/root/ ; \
fi
Looking in links: /tmp/tmpa9_lumsc
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-18.1 setuptools-40.6.2
Однако, при сборке в системе, в которой установлен python3, я не могу найти какой-либо способ помешать ему рассмотреть pip в / usr /Библиотека / python3.7 / сайт-пакеты.Запуск той же конфигурации даст:
Looking in links: /tmp/tmp086yebrw
Requirement already up-to-date: setuptools in /usr/lib/python3.7/site-packages (40.6.2)
Requirement already up-to-date: pip in /usr/lib/python3.7/site-packages (18.1)
Затем я попытался --with-ensurepip=install
, но это лишь немного изменило вывод:
Looking in links: /tmp/tmpl0x88vr9
Requirement already satisfied: setuptools in /usr/lib/python3.7/site-packages (40.6.2)
Requirement already satisfied: pip in /usr/lib/python3.7/site-packages (18.1)
Я не знаю, является ли этоошибка в surepip, где он не должен учитывать каталог библиотеки Python по умолчанию при запуске с указанным --root
, или если что-то не хватает для этой «установки в совершенно новое пространство».
Я посмотрелпри идее использования venv , но я хочу, чтобы получающиеся двоичные файлы могли запускаться в обычных местах системы после упаковки и установки, поэтому я думаю, что это может быть неправильное направление.
Цените любые указатели.Спасибо.