Совместить --пользователь --ошибка префикс с setup.py установите



Я пытался установить пакеты Python систему, к которой я недавно получил доступ. Я пытался воспользоваться относительно новым питоном на сайт пользователя-каталог пакетов, и новая опция --user. (Опция в настоящее время без документов, однако он существует для Python 2.6+; вы можете увидеть справку, запустив python setup.py install --help.)



когда я попытался запустить



python setup.py install --user


на любом пакете, который я загрузил, я всегда получал следующее ошибка:



error: can't combine user with with prefix/exec_prefix/home or install_(plat)base


ошибка была чрезвычайно озадачивающей, потому что, как вы можете видеть, я не предоставлял --prefix,--exec-prefix,--install-base или --install-platbase флаги как параметры командной строки. Я потратил много времени, пытаясь понять, в чем проблема. Я документирую свой ответ ниже, в надежде сэкономить какой-то другой бедной душе несколько часов Як бритья.

627   3  

3 ответов:

один раз обходной путь:

pip install --user --install-option="--prefix=" <package_name>

или

python setup.py install --user --prefix=

обратите внимание, что нет текста (даже пробелов) после =.

Do не забыть --user флаг.

установка нескольких пакетов:

создать ~/.pydistutils.cfg (или эквивалент для вашей ОС / платформы) со следующим содержанием:

[install]
prefix=

обратите внимание, что нет текста (даже пробелов) после =.

затем запустите необходимое pip install --user или python setup.py install --user команды. Делай не забыть --user флаг.

наконец, удалите или переименуйте этот файл. Оставляя этот файл присутствует вызовет проблемы при установке пакетов Python в масштабах всей системы (т. е., без --user) как этот пользователь с этим ~/.pydistutils.cfg.

причина этой проблемы

это, кажется, проблема с OpenSUSE и RedHat, что привело к ошибка в виртуальное окружение на этих платформах.

ошибка происходит от системного уровня файл конфигурации distutils (в моем случае /usr/lib64/python2.6/distutils/distutils.cfg) где это было

[install]
prefix=/usr/local

в принципе, это эквивалентно всегда запускать команду install как install --prefix=/usr/local. Вы должны переопределить эту спецификацию, используя один из методов выше.

публикация, чтобы сэкономить время других, так как никакие доступные ответы не работали для меня...

в некоторых средах, используя --target (-t) переключатель все равно попадет в ту же ошибку. В моем тестировании на двух вариантах linux, я столкнулся с той же проблемой при использовании

Comments

    Ничего не найдено.