Пакет Python в автономном режиме

Какой лучший способ загрузить пакет python и его зависимости от pypi для автономной установки на другой машине? Есть ли простой способ сделать это с помощью pip или easy_install? Я пытаюсь установить библиотеку запросов в поле FreeBSD, которое не подключено к Интернету.

Ответ 1

Если пакет находится на 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, в котором упоминается одна или несколько вещей, которые у вас есть в каталоге /pypi. Например:

  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 .

В обоих случаях сборка завершится неудачей, если одна или несколько зависимостей не присутствуют в каталоге /pypi. Он не будет пытаться беспорядочно устанавливать отсутствующие вещи из Интернета.

Я настоятельно рекомендую вызывать setup.py develop ... и easy_install ... в активной виртуальной среде , чтобы не загрязнять глобальную среду Python. Это (virtualenv, что есть) в значительной степени путь. Никогда не устанавливайте ничего в глобальную среду Python.

Если машина, на которой вы создали свое приложение, имеет ту же архитектуру, что и машина, на которой вы хотите ее развернуть, вы можете просто архивировать всю директорию виртуальной среды, в которую вы easy_install -если все. Как раз перед тем, как сделать tarballing, вы должны сделать каталог виртуальной среды перемещаемым (см. - relocatable). ПРИМЕЧАНИЕ. для конечного компьютера должна быть установлена ​​одна и та же версия Python, а также любые зависимости на C, которые могут быть установлены вашим приложением (например, если вы зависите от PIL, тогда необходимо предварительно установить libpng, libjpeg и т.д.).

Ответ 2

Команда pip download позволяет загружать пакеты без их установки:

pip download -r requirements.txt

(В предыдущих версиях pip это было записано как pip install --download -r requirements.txt.)

Затем вы можете использовать pip install --no-index --find-links/path/to/download/dir / -r requirements.txt чтобы установить эти загруженные sdists без доступа к сети.

Ответ 3

Если вы хотите установить библиотеки Python и их зависимости в автономном режиме, выполните следующие действия на компьютере с той же ОС, подключенной к сети и установленной Python:

1) Создайте файл requirements.txt с похожим содержимым (Примечание. Это библиотеки, которые вы хотите загрузить):

Flask==0.12
requests>=2.7.0
scikit-learn==0.19.1
numpy==1.14.3
pandas==0.22.0

Одним из вариантов создания файла требований является использование pip freeze > requirements.txt. Это перечислит все библиотеки в вашей среде. Затем вы можете войти в requirements.txt и удалить ненужные.

2) Выполните команду mkdir wheelhouse && pip download -r requirements.txt -d wheelhouse для загрузки библиотек и их зависимостей в каталог wheelhouse

3) Скопируйте файл require.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, чтобы установить библиотеки и их зависимости

Ответ 4

автономный питон. для этого я использую virtualenv (изолированная среда Python)

1) установить virtualenv онлайн с помощью pip:

pip install virtualenv --user

или в автономном режиме с помощью whl: перейдите по этой ссылке, загрузите последнюю версию (.whl или tar.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 папка находится там. загрузите пакеты со следующим кодом и поместите их в папку 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

что находится в папке в автономном режиме [needs.txt, tranferred_packages {Flask-0.10.1.tar.gz,...}]

проверить список вашей посылки

pip list

примечание: как и в 2017 году, лучше использовать python 3. вы можете создать python 3 virtualenv с помощью этой команды.

virtualenv -p python3 envname

Ответ 5

Загрузите tarball, перенесите его на свою машину FreeBSD и извлеките его, затем запустите python setup.py install и все готово!

EDIT: просто добавьте это, вы также можете установить tarballs с помощью pip.

Ответ 6

Использование скомпилированных 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 не находятся на разных машинах.

Больше исх. здесь: https://pip.pypa.io/en/stable/user_guide/#installation-bundles

Ответ 7

У меня была похожая проблема. И я должен был установить его так же, как мы делаем это из pypi.

Я сделал следующие вещи:

  1. Создайте каталог для хранения всех пакетов на машине, которые имеют доступ к Интернету.

    mkdir -p /path/to/packages/
    
  2. Скачать все пакеты по пути

    pip download -r requirements.txt -d /path/to/packages
    
    Eg:- ls /root/wheelhouse/  # **/root/wheelhouse** is my **/path/to/packages/**
    total 4524
    -rw-r--r--. 1 root root   16667 May 23  2017 incremental-17.5.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   34713 Sep  1 10:21 attrs-18.2.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root 3088398 Oct 15 14:41 Twisted-18.9.0.tar.bz2
    -rw-r--r--. 1 root root  133356 Jan 28 15:58 chardet-3.0.4-py2.py3-none-any.whl
    -rw-r--r--. 1 root root  154154 Jan 28 15:58 certifi-2018.11.29-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   57987 Jan 28 15:58 requests-2.21.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   58594 Jan 28 15:58 idna-2.8-py2.py3-none-any.whl
    -rw-r--r--. 1 root root  118086 Jan 28 15:59 urllib3-1.24.1-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   47229 Jan 28 15:59 tqdm-4.30.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root    7922 Jan 28 16:13 constantly-15.1.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root  164706 Jan 28 16:14 zope.interface-4.6.0-cp27-cp27mu-manylinux1_x86_64.whl
    -rw-r--r--. 1 root root  573841 Jan 28 16:14 setuptools-40.7.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   37638 Jan 28 16:15 Automat-0.7.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   37905 Jan 28 16:15 hyperlink-18.0.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   52311 Jan 28 16:15 PyHamcrest-1.9.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   10586 Jan 28 16:15 six-1.12.0-py2.py3-none-any.whl
    
  3. Загрузите каталог с пакетами и скопируйте его на компьютер, на котором нет доступа к Интернету. Тогда делай,

    cd /path/to/packages/
    tar -cvzf packages.tar.gz .  # not the . (dot) at the end
    

    Скопируйте packages.tar.gz в конечный компьютер, у которого нет доступа к Интернету.

  4. На компьютере, который не имеет доступа к Интернету, выполните следующие действия (при условии, что вы скопировали tarred-пакеты в /path/to/package/ на текущем компьютере)

    cd /path/to/packages/
    tar -xvzf packages.tar.gz
    mkdir -p $HOME/.config/pip/
    
    vi $HOME/.config/pip/pip.conf
    

    и вставьте следующий контент внутрь и сохраните его.

    [global]
    timeout = 10
    find-links = file:///path/to/package/
    no-cache-dir = true
    no-index = true
    
  5. Наконец, я предлагаю вам использовать некоторую форму virtualenv для установки пакетов.

    virtualenv -p python2 venv # use python3, if you are on python3
    source ./venv/bin/activate
    pip install <package>
    

Вы должны быть в состоянии загрузить все модули, которые находятся в каталоге /path/to/package/.

Примечание: я только сделал это, потому что я не мог добавить параметры или изменить способ установки модулей. В противном случае я бы сделал

    pip install --no-index --find-links /path/to/download/dir/ -r requirements.txt

Ответ 8

Для Pip 8.1.2 вы можете использовать pip download -r requ.txt для загрузки пакетов на локальную машину.

Ответ 9

Мой вопрос такой же. Если я использую домашний интернет, установочные пакеты из сетевого источника нормальные, простые и быстрые. Но если я использую офисную сеть или университетскую сеть (с административным контролем VPN, антивирусным контролем), код, подобный "pip3 install --upgrade tenorflow", будет бесполезным, соединение блокируется и возвращается без результата. Пакеты модулей для загрузки вне кода Python (pip, pip3 и т.д.) Необходимы, быстрее и удобнее.

Ответ 10

Позвольте мне пройти процесс шаг за шагом:

  1. На компьютере, подключенном к Интернету, создайте папку.
   $ mkdir packages
   $ cd packages
  1. Откройте командную строку или оболочку и выполните следующую команду:

    Предположим, вам нужен пакет tensorflow

    $ pip download tensorflow

  2. Теперь на целевом компьютере скопируйте папку packages и примените следующую команду

  $ cd packages
  $ pip install 'tensorflow-xyz.whl' --find-links '.'

Обратите внимание, что tensorflow-xyz.whl должен быть заменен исходным именем требуемого пакета.