Автономная Установка Пакетов Python
каков наилучший способ загрузить пакет python и его зависимости от pypi для автономной установки на другой машине? Есть ли простой способ сделать это с pip или easy_install? Я пытаюсь установить библиотеку запросов на поле FreeBSD, которое не подключено к интернету.
7 ответов:
если пакет находится на PYPI, загрузите его и его зависимости в некоторый локальный каталог. Е. Г.
$ mkdir /pypi && cd /pypi $ ls -la -rw-r--r-- 1 pavel staff 237954 Apr 19 11:31 Flask-WTF-0.6.tar.gz -rw-r--r-- 1 pavel staff 389741 Feb 22 17:10 Jinja2-2.6.tar.gz -rw-r--r-- 1 pavel staff 70305 Apr 11 00:28 MySQL-python-1.2.3.tar.gz -rw-r--r-- 1 pavel staff 2597214 Apr 10 18:26 SQLAlchemy-0.7.6.tar.gz -rw-r--r-- 1 pavel staff 1108056 Feb 22 17:10 Werkzeug-0.8.2.tar.gz -rw-r--r-- 1 pavel staff 488207 Apr 10 18:26 boto-2.3.0.tar.gz -rw-r--r-- 1 pavel staff 490192 Apr 16 12:00 flask-0.9-dev-2a6c80a.tar.gzнекоторые пакеты могут быть сохранены в похожих архивы вручную. Я делаю это много, когда мне нужна более свежая (менее стабильная) версия чего-то. Некоторые пакеты не находятся на PYPI, так же относится к ним.
предположим, что у вас есть правильно сформированное приложение Python в
~/src/myapp
.~/src/myapp/setup.py
будетinstall_requires
список, который упоминает одну или несколько вещей, которые вы есть в вашем . Вот так:install_requires=[ 'boto', 'Flask', 'Werkzeug', # and so on
если вы хотите иметь возможность запускать свое приложение со всеми необходимыми зависимостями, все еще взламывая его, вы сделаете что-то вроде этого:
$ cd ~/src/myapp $ python setup.py develop --always-unzip --allow-hosts=None --find-links=/pypiтаким образом ваше приложение будет выполняться прямо из директории с исходниками. Вы можете взломать вещи, а затем повторно запустить приложение, не перестраивая ничего.
если вы хотите установить свое приложение и его зависимости в текущую среду python, вы будете сделать что-то вроде этого:
$ cd ~/src/myapp $ easy_install --always-unzip --allow-hosts=None --find-links=/pypi .в обоих случаях сборка завершится неудачно, если одна или несколько зависимостей отсутствуют в . Он не будет пытаться беспорядочно устанавливать недостающие вещи из интернета.
я настоятельно рекомендую, чтобы вызвать
setup.py develop ...
иeasy_install ...
в активном виртуальная среда чтобы избежать загрязнения вашей глобальной среды Python. Это (virtualenv то есть) в значительной степени путь. Никогда ничего не устанавливайте в global среда Python.если машина, на которой вы создали приложение, имеет ту же архитектуру, что и машина, на которой вы хотите его развернуть, вы можете просто поместить весь каталог виртуальной среды, в который вы
easy_install
-Эд все. Однако непосредственно перед тарбаллингом вы должны сделать каталог виртуальной среды перемещаемым (см. --перемещаемых). Примечание: на целевой машине должна быть установлена та же версия Python, и также любые зависимости на основе C, которые может иметь ваше приложение, также должны быть предварительно установлены (например, если вы зависите от пил, затем libpng, libjpeg и т. д. должны быть предварительно установлены).
я использую
-d
(или--download
опции) вpip install
, что делает процесс загрузки sdist tarballs из PyPI намного проще. Например,pip install --download /path/to/some/dir celery
загрузит sdist tarballs для сельдерея и всех его зависимостей в/path/to/some/dir
(но не устанавливать их). Тогда вы можете использоватьpip install --no-index --find-links /path/to/some/dir/ celery
чтобы установить сельдерей, используя эти загруженные sdists, без доступа к сети.тот же самый процесс работает, если вы замените
celery
в обеих командах с-r requirements.txt
, где требования.txt-это файл требований pip, в котором перечислены все пакеты, которые вы хотите (и, возможно, версии, которые вы хотите).обновление
DEPRECATION: pip install --загрузка была устаревшей и будет снимается в дальнейшем. Пип теперь имеет скачать команда, которая должна быть используется вместо этого.
команда выглядит так:
pip download -r requirements.txt
для python3:
pip3 download -r requirements.txt
скачать архив, перенесите его на ваш компьютер FreeBSD и извлеките его, после чего запустите
python setup.py install
и ты молодец!EDIT: чтобы добавить это, вы также можете установить tarballs с pip сейчас.
автономный python. для этого я использую virtualenv (изолированная среда Python)
1) Установите virtualenv онлайн с Pip:
pip install virtualenv --user
или в автономном режиме с whl: перейти к этому ссылке , скачать последнюю версию (.колесо или таре.gz) и установите это с помощью этой команды:
pip install virtualenv-15.1.0-py2.py3-none-any.whl --user
С помощью
--user
вам не нужно использоватьsudo pip…
.2) Используйте virtualenv
на онлайн-машине выберите каталог с терминалом
cd
и запустите этот код:python -m virtualenv myenv cd myenv source bin/activate pip install Flask
после установки всех пакетов, вы должны создать
requirements.txt
итак, пока ваш virtualenv активен, напишитеpip freeze > requirements.txt
откройте новый терминал и создайте еще один env, как
myenv2
.python -m virtualenv myenv2 cd myenv2 source bin/activate cd - ls
теперь вы можете перейти в автономную папку, где ваш
requirements.txt
иtranferred_packages
папка находится там. загрузите пакеты со следующим кодом и поместите их все в .pip download -r requirements.txt
принять ваша автономная папка на автономный компьютер, а затем
python -m virtualenv myenv2 cd myenv2 source bin/activate cd - cd offline pip install --no-index --find-links="./tranferred_packages" -r requirements.txt
что находится в папке offline [требования.txt, tranferred_packages {колба-0.10.1.смола.ГЗ ...}]
проверьте список вашего пакета
pip list
Примечание: поскольку мы находимся в 2017 году, лучше использовать python 3. вы можете создать python 3 virtualenv с помощью этой команды.
virtualenv -p python3 envname
используя
wheel
собранные пакеты.укутаться:
$ tempdir=$(mktemp -d /tmp/wheelhouse-XXXXX) $ pip wheel -r requirements.txt --wheel-dir=$tempdir $ cwd=`pwd` $ (cd "$tempdir"; tar -cjvf "$cwd/bundled.tar.bz2" *)
скопируйте tarball и установите:
$ tempdir=$(mktemp -d /tmp/wheelhouse-XXXXX) $ (cd $tempdir; tar -xvf /path/to/bundled.tar.bz2) $ pip install --force-reinstall --ignore-installed --upgrade --no-index --no-deps $tempdir/*
Примечание
wheel
двоичные пакеты не находятся на разных машинах.Подробнее ref. здесь: https://pip.pypa.io/en/stable/user_guide/#installation-bundles
для Pip 8.1.2 вы можете использовать
pip download -r requ.txt
для загрузки пакетов на локальную машину.
если вы хотите установить Python libs и их зависимости в автономном режиме, выполните следующие действия на машине с той же ОС, подключенной к сети, установленной python:
1) Создать
requirements.txt
файл с содержимым типа:Flask==0.12 requests>=2.7.0 scikit-learn==0.19.1 numpy==1.14.3 pandas==0.22.0
2) Выполнить команду
mkdir wheelhouse && pip download -r requirements.txt -d wheelhouse
чтобы загрузить библиотеки и их зависимости в direcotrywheelhouse
3) требования к копии.txt в
wheelhouse
каталог4) архив рулевой рубки в
wheelhouse.tar.gz
Сtar -zcf wheelhouse.tar.gz wheelhouse
загрузите
wheelhouse.tar.gz
в вашей целевой машине:1) выполнить
tar -zxf wheelhouse.tar.gz
для извлечения файлов2) Выполнить
pip install -r wheelhouse/requirements.txt --no-index --find-links wheelhouse
для установки библиотек и их зависимостей