Вопрос-Ответ

How to install packages offline?

Как устанавливать пакеты в автономном режиме?

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

Переведено автоматически
Ответ 1

В системе, имеющей доступ к Интернету

Команда 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

для установки загруженных модулей без доступа к сети.

Ответ 2

Если вы хотите установить библиотеки 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) Скопируйте requirements.txt в wheelhouse каталог

4) Архивируйте wheelhouse в 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 для установки библиотек и их зависимостей

Ответ 3

If the package is on PYPI, download it and its dependencies to some local directory.
E.g.

$ 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

Some packages may have to be archived into similar looking tarballs by hand. I do it a lot when I want a more recent (less stable) version of something. Some packages aren't on PYPI, so same applies to them.

Suppose you have a properly formed Python application in ~/src/myapp. ~/src/myapp/setup.py will have install_requires list that mentions one or more things that you have in your /pypi directory. Like so:

  install_requires=[
'boto',
'Flask',
'Werkzeug',
# and so on

If you want to be able to run your app with all the necessary dependencies while still hacking on it, you'll do something like this:

$ cd ~/src/myapp
$ python setup.py develop --always-unzip --allow-hosts=None --find-links=/pypi

This way your app will be executed straight from your source directory. You can hack on things, and then rerun the app without rebuilding anything.

If you want to install your app and its dependencies into the current python environment, you'll do something like this:

$ cd ~/src/myapp
$ easy_install --always-unzip --allow-hosts=None --find-links=/pypi .

In both cases, the build will fail if one or more dependencies aren't present in /pypi directory. It won't attempt to promiscuously install missing things from Internet.

I highly recommend to invoke setup.py develop ... and easy_install ... within an active virtual environment to avoid contaminating your global Python environment. It is (virtualenv that is) pretty much the way to go. Never install anything into global Python environment.

If the machine that you've built your app has same architecture as the machine on which you want to deploy it, you can simply tarball the entire virtual environment directory into which you easy_install-ed everything. Just before tarballing though, you must make the virtual environment directory relocatable (see --relocatable option). NOTE: the destination machine needs to have the same version of Python installed, and also any C-based dependencies your app may have must be preinstalled there too (e.g. say if you depend on PIL, then libpng, libjpeg, etc must be preinstalled).

Ответ 4

Let me go through the process step by step:


  1. On a computer connected to the internet, create a folder.

   $ mkdir packages
$ cd packages

  1. open up a command prompt or shell and execute the following command:


    Suppose the package you want is tensorflow


    $ pip download tensorflow


  2. Now, on the target computer, copy the packages folder and apply the following command


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

Note that the tensorflow-xyz.whl must be replaced by the original name of the required package.

python pip python-requests