Как установить модули Python в локальный каталог? - пользователь и экспорт pythonpath не работает
Я не очень разбираюсь в python, но хотел бы установить некоторые модули python в локальный каталог на сервере, к которому у меня нет доступа sudo.
Я начинаю с перехода в нужный каталог (не root) и создаю дерево каталогов, необходимое для хранения моих пользовательских модулей.
cd /root/example/sub-example
mkdir -p local/lib/python2.7/site-packages
Затем я экспортирую этот локальный путь в PYTHONPATH
export PYTHONPATH=$PYTHONPATH:/root/example/sub-example/local/lib/python2.7/site-packages
Затем я создаю новый подкаталог для хранения пакета Python при извлечении
mkdir example-python-directory
cd example-python-directory
wget http://example-python-package
tar -xvf example-python-package.tar.gz
cd example-python-package
Наконец, я запускаю скрипт setup.py с --user
флаг, чтобы попытаться установить его в моем указанном /local
каталог
python setup.py install --user
Проблема в том, что у меня ничего не установлено /root/example/sub-example/local/lib/python2.7/site-packages
каталог, и вместо этого я обнаружил, что теперь у меня есть новый каталог в корне: /root/.local/lib/python2.7/site-packages
Есть ли способ предотвратить это? Я чувствую, что отсутствие знаний Python заставляет меня совершить глупую ошибку, которая, вероятно, очевидна для других. Спасибо за помощь!
2 ответа
Создайте папку с именем "lib"
Для Python 3
pip3 install <your_python_module_name> -t lib/
Для Python 2
pip install <your_python_module_name> -t lib/
CFLAGS=-I$(brew --prefix)/include LDFLAGS=-L$(brew --prefix)/lib pip install <package>
Я обнаружил, что на серверах, к которым у вас нет доступа root, вы обычно можете установить модуль python в свой.brew/lib, используя его.
Virtualenv - это то, что я бы порекомендовал для этого случая (и в значительной степени для любого другого случая). Я использую его почти для всего, что я делаю в Python.
Он позволяет вам по существу создать песочницу, содержащую среду Python, которая загружается из установки Python на вашем компьютере, и устанавливать в нее любые модули, которые вы хотите.
Как правило, он не требует использования sudo, поскольку вы не касаетесь установки системы. Вы можете вообще pip install
модуль прямо в virtualenv, и затем вы запускаете свои сценарии из этого virtualenv. Вам просто нужно местоположение, из которого вы можете читать / писать / выполнять, например, каталог, который вы создаете в домашнем каталоге вашего пользователя.
Вы можете отслеживать, что установлено, выполнив pip freeze > requirements
и проверка этого в SCM, а затем новый файл virtualenv может быть воссоздан с использованием этого файла, готового для запуска ваших сценариев.
Ссылка, которую я предоставил выше, содержит более подробную информацию о том, как использовать virtualenv.
Изменить в ответ на комментарий от OP:
Вы все еще можете использовать pip install
за пределами virtualenv, и я бы порекомендовал это. Тем не менее, это может работать только на различных установках Python, которые могут быть на коробке (вызвать pip
из каталога bin той установки, которую вы хотите использовать).
Однако это не сработает для установки в произвольные каталоги. Для этого вы можете попытаться разархивировать файл egg (предполагается, что это zip-файлы) в нужный каталог, а затем убедитесь, что этот каталог находится на PYTHONPATH
, Некоторые файлы egg доступны для прямой загрузки с PyPI, хотя некоторые являются только исходными.
Я думаю, что подход гораздо более сложен и склонен к проблемам, чем virtualenv.