Как я могу установить пакет python без pip или virtualenv

#python #ubuntu

#python #ubuntu

Вопрос:

Мне нужно развернуть приложение python на рабочем сервере (Ubuntu), которым я не управляю, и у меня нет разрешений на apt-get, pip, virtualenv, etc. В настоящее время на его сервере работает python 2.6 . Мне нужно установить pycrypto как зависимость для приложения, но, учитывая мои ограниченные разрешения, я не уверен, как это сделать. Единственное, на что у меня есть разрешения, — это wget ресурс и распаковать его или что-то в этом роде.

Во-первых, можно ли использовать его, не устанавливая его в вышеупомянутом подходе? Если нет, могу ли я загрузить пакет, а затем добавить __init__.py файлы в каталог pycrypto, чтобы python знал, как его найти, например:

 /my_app
  /pycrypto
     /__init__.py
     /pycrypto.py
  

Комментарии:

1. вы могли бы попробовать поместить его в свой PYTHONPATH.

Ответ №1:

Согласно PEP370, начиная с python 2.6, у вас может быть каталог сайта для каждого пользователя (см. Что нового в Python 2.6?).

Таким образом, вы можете использовать --user опцию easy_install для установки каталога для каждого пользователя вместо общесистемного. Я полагаю, что аналогичный вариант существует и для pip . Для этого не требуется никаких привилегий, поскольку он использует только текущие пользовательские каталоги.

Если у вас не установлен установщик, вы можете вручную распаковать пакет в:

 ~/.local/lib/python2.6/site-packages
  

Или, если вы используете Windows, в:

 %APPDATA%/Python/Python26/site-packages
  

В случае pycrypto , пакет требует сборки перед установкой, поскольку он содержит некоторый код C. Исходные тексты должны содержать setup.py файл. Вы должны создать библиотеку, работающую

 python setup.py build
  

После этого вы можете установить его в каталог пользователя, указав:

 python setup.py install --user
  

Обратите внимание, что на этапе сборки может потребоваться, чтобы некоторая библиотека C уже была установлена.


Если вы не хотите этого делать, единственный вариант — отправить библиотеку вместе с вашим приложением.


Кстати: я считаю easy_install , что на самом деле не проверяет, являетесь ли вы root перед выполнением общесистемной установки. Он просто проверяет, может ли он записывать в общесистемный каталог сайта. Итак, если у вас есть права на запись там, sudo в первую очередь нет необходимости использовать. Однако это было бы действительно странно…

Комментарии:

1. Похоже, у меня тоже нет easy_install, что отстой. Итак, чтобы было ясно, когда вы говорите о доставке библиотеки с моим приложением, вы имеете в виду способ, который я перечислил в вопросе, или другой способ?

2. @Brad Я только что обновил свой ответ. Вам просто нужно скопировать пакет в каталог сайта для каждого пользователя. Подробные сведения см. В моем ответе и связанной документации. Для некоторых сложных установок потребуется изменить некоторые .pth найденные, но это, как правило, легко. Если базовое копирование / вставка не работает, оставьте мне комментарий, и я проверю pycrypto , требуется ли небольшая настройка.

3. Конечно, easy_install не проверяет разрешения, как и pip, но ubuntu, безусловно, проверяет.

4. @PadraicCunningham Я не вижу смысла в вашем комментарии. Я просто хотел уточнить, что: установка системы не подразумевает обязательного использования sudo . Вы можете выполнить установку системы без sudo привилегий (хотя это довольно странная вещь …)

5. Я не понимаю, что вы имеете в виду, если вы хотите установить пакеты python в ubuntu с помощью pip или easy_install в каталог пакетов по умолчанию, вам нужен sudo. По сути, возможность установки в масштабах всей системы без sudo сводит на нет цель использования sudo в первую очередь.

Ответ №2:

Используйте easy_install . Он уже должен быть установлен в Ubuntu для python 2.6 . Если нет, ознакомьтесь с этими инструкциями по установке.

Комментарии:

1. как бы вы установили без sudo?

2. @PadraicCunningham уже easy_install нет в системе?

3. вам нужен sudo для установки пакетов в любые подкаталоги / usr, где, как я полагаю, установлен python.

4. @PadraicCunningham Нет, если вы устанавливаете только для своего пользователя.