Я обычно устанавливал пакеты Python через pip.
Для Google App Engine мне нужно установить пакеты в другой целевой каталог.
Я пробовал:
pip install -I Фляга-отдыхать --target ./lib
но это не с:
должен предоставить либо home, либо prefix / exec-prefix - не оба
Как я могу заставить это работать?
pip install
операции :(--target
, не нарушая при этомpip install
поведение по умолчанию ?Я полагаю, что есть более простое решение этой проблемы (Python Homebrew на macOS), которое не нарушит ваши обычные операции с пипсами.
Все, что вам нужно сделать, это создать
setup.cfg
файл в корневом каталоге вашего проекта, обычно там, где находится ваш основной__init__.py
или исполняемый файл py. Поэтому, если корневая папка вашего проекта:,/path/to/my/project/
создайте тамsetup.cfg
файл и поместите в него волшебные слова:Хорошо, теперь вы можете запускать команды pip для этой папки:
Эта команда будет выполняться изящно только для этой папки. Просто скопируйте
setup.cfg
в любые другие проекты, которые у вас могут быть. Нет необходимости писать в.pydistutils.cfg
вашем домашнем каталоге.После того, как вы закончите установку модулей, вы можете удалить
setup.cfg
.источник
setup.cfg
после установки части. Я прожегал целых два дня, пытаясь понять, почему моя виртуальная среда была испорчена, с ошибками вродеCould not install packages due to an EnvironmentError: [Errno 1] Operation not permitted: '/bin/easy_install'
. Удаление установочного файла восстановило мое здравомыслиеВ OSX (Mac), предполагая, что папка проекта называется / var / myproject
cd /var/myproject
setup.cfg
и добавьте[install] prefix=
pip install <packagename> -t .
источник
-t .
вместо того, чтобы оставаться вне каталога . Этот способ работал для меня, а другой нет, хотя я понятия не имею, почему.Другое решение * для пользователей Homebrew - просто использовать
virtualenv
.Конечно, это может устранить необходимость в целевом каталоге в любом случае - но даже если это не так, я нашел
--target
работы по умолчанию (например, без создания / изменения файла конфигурации) в виртуальной среде.Я говорю решение; возможно, это просто еще одна мотивация тщательно использовать венв ...
источник
Я столкнулся с ошибками с другими рекомендациями вокруг
--install-option="--prefix=lib"
. Единственное, что я обнаружил, это работает, используяPYTHONUSERBASE
как описано здесь .это не совсем то же самое
--target
, но в любом случае это помогает мне.источник
Как уже упоминалось, это известная ошибка при установке pip & python вместе с homebrew.
Если вы создадите
~/.pydistutils.cfg
файл с инструкцией «empty prefix», это решит эту проблему, но нарушит нормальные операции в pip.До тех пор, пока эта ошибка не будет официально устранена, одним из вариантов будет создание собственного bash-скрипта, который бы обрабатывал этот случай:
Этот скрипт оборачивает вашу команду и:
~/.pydistutils.cfg
файл с инструкцией «пустой префикс»~/.pydistutils.cfg
файлЭтот сценарий может быть изменен и адаптирован к вашим потребностям, но у вас есть идея. И это позволяет вам запускать команду без торможения. Надеюсь, поможет :)
источник
Если вы используете virtualenv *, было бы неплохо проверить,
which pip
что вы используете.Если вы видите что-то вроде
/usr/local/bin/pip
того, что вырвались из своего окружения. Реактивация вашего virtualenv исправит это:VirtualEnv:
$ source bin/activate
VirtualFish:
$ vf activate [environ]
*: Я использую virtualfish, но я полагаю, что этот совет относится к обоим.
источник
У меня похожая проблема. Я использую флаг --system, чтобы избежать ошибки, поскольку я описываю здесь другой поток, где я объясняю конкретный случай моей ситуации. Я публикую это здесь, ожидая, что это может помочь любому, кто сталкивается с той же проблемой.
источник