Я пытаюсь использовать pip для установки библиотек в Python virtualenv, который находится на главном узле AWS EMR. По какой-то причине sudo pip работает нормально, но non-sudo pip молча завершается неудачей.
Некоторый фон:
- Я запускаю кластер EMR с версией emr-5.19.0.
- Я выполняю SSHing на главном узле, который использует Amazon Linux AMI 2018.03.
- По умолчанию в этой ОС установлены Python 2.7 и 3.4.
- Я создал новый virtualenv на основе уже установленного Python 3.4.
- Я активировал свой новый virtualenv и убедился, что все пути указывают на мою установку venv (, а не на глобальную установку Python), например,
which python
, which pip
все выглядит правильно.
Итак, я создаю и активирую свой virtualenv следующим образом:
cd /home/ec2-user/my_app
virtualenv --python=python3.4 venv
source venv/bin/activate
Это работает. Далее я пытаюсь установить пример библиотеки следующим образом:
pip install numpy
Вывод:
Collecting numpy
Installing collected packages: numpy
Successfully installed numpy-1.16.0
Однако, несмотря на успешное завершение вывода, import numpy
выдает ошибку импорта, и numpy не отображается в pip list
или pip freeze
. Я даже просверлил в path/to/venv/lib/python3.4/dist-packages
и убедился, что каталог numpy
не создан.
К сожалению, эта работает :
sudo path/to/venv/bin/pip install numpy
Проблема в том, что я не хочу использовать sudo, потому что это противоречит лучшим практикам . Однако, кажется, что большинство людей используют sudo для этой задачи (примеры здесь и здесь ), так что, возможно, это просто требование в среде EMR?
Примечание. Эта проблема возникает только для некоторых библиотек. Например, pyspark и geocoder устанавливаются нормально, но numpy и pandas молча завершаются неудачей.