Установка пакетов Pandas или Openpyxl на автономной машине RedHat [дубликат]

Если вы не хотите добавлять один метод, как говорит Джаред, вы можете попробовать использовать лямбда

validates :description, presence: true, if: ->{ first_step? || require_validation }
94
задан Jeremy 25 November 2012 в 09:32
поделиться

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, в котором упоминается одна или несколько вещей, которые у вас есть в вашем каталоге /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 все. Как раз перед тем, как сделать это, вы должны сделать каталог виртуальной среды перемещаемым (см. Опцию - relocatable ). ПРИМЕЧАНИЕ. Конечным машинам должна быть установлена ​​одна и та же версия Python, а также любые зависимости на C, которые могут быть установлены вашим приложением (например, если вы зависите от PIL , а затем libpng, libjpeg и т. д.).

46
ответ дан Pavel Repin 21 August 2018 в 13:28
поделиться

Если вы хотите, чтобы установить python libs и их зависимости в автономном режиме, выполните следующие шаги на машине с такими же os, подключенными к сети, установленными 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 для загрузки libs и их зависимостей в direcotry 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 для установки libs и их зависимостей

1
ответ дан chaokunyang 21 August 2018 в 13:28
поделиться

оффлайн python. для этого я использую 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

, что находится в папка offline [requirements.txt, tranferred_packages {Flask-0.10.1.tar.gz, ...}]

проверить список вашего пакета

pip list

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

virtualenv -p python3 envname
5
ответ дан cyera 21 August 2018 в 13:28
поделиться
  • 1
    Кажется, что отсутствуют шаги или «обфускация». здесь я бы ожидал увидеть «деактивировать», а затем «pip freeze» ... cd offline и ./tranferred_packages появляется из ниоткуда - ясно, что это требует очистки? – Hannu 7 January 2018 в 23:57
  • 2
    может быть, но вы должны подумать: «Мне нужна короткая почта», «этот процесс был сложным, и я не мог писать каждый шаг (это возможно только на YouTube)». – cyera 28 January 2018 в 00:57
  • 3

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

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

5
ответ дан dav1d 21 August 2018 в 13:28
поделиться
  • 1
    Как насчет всех зависимостей? Каков наилучший способ их решения? Нужно ли вручную устанавливать зависимости? – Chris Drantz 18 June 2012 в 22:55
  • 2
    Да, это, к сожалению, единственный способ узнать. – dav1d 19 June 2012 в 11:54

Использование wheel скомпилированных пакетов.

bundle up:

$ 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

2
ответ дан eshizhan 21 August 2018 в 13:28
поделиться
  • 1
    У меня были проблемы с подключением к машине с Python 3.6 и извлечением из другого с помощью Python 3.5: & lt; package & gt; .whl не является поддерживаемым колесом на этой платформе ". Исходные и целевые версии могут потребоваться для соответствия некоторым пакетам. – Juuso Ohtonen 12 October 2017 в 09:28

Я использую параметр -d (или --download) для pip install, что делает процесс загрузки sdist tarball из 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, где require.txt файл требований к пунктам, в котором перечислены все нужные вам пакеты (и, возможно, нужные вам версии).

UPDATE

DEPRECATION: pip install --download устарел и будет удалены в будущем. Теперь у команды есть команда download .

Команда такова: pip download -r requirements.txt

Для python3: pip3 download -r requirements.txt

183
ответ дан TechJS 21 August 2018 в 13:28
поделиться
  • 1
    проблема заключается в том, что зависимости могут иметь другие зависимости, и они не будут загружены. – vikki 1 July 2013 в 07:01
  • 2
    Змеиная корзина (построенная на вершине пипа) также загрузит зависимости зависимостей. – vikki 1 July 2013 в 11:53
  • 3
    @vikki Не верно, & quot; pip install --download & quot; также загружает зависимости, поэтому приведенные выше команды будут работать корректно, даже если ваши требования имеют дополнительные зависимости. Змеиная корзина может делать другие полезные вещи (никогда не использовала ее), но это определенно не нужно по этой причине. – Carl Meyer 1 July 2013 в 19:25
  • 4
    @vikki Я понимаю, что вы говорите, но я говорю вам, что это неправда :-) На самом деле вам стоит попробовать, прежде чем вы снова опубликуете такое же утверждение. Я просто поставил «pytest». в файле requirements.txt, запущен "pip install --download. -r requirements.txt ", и он загружает sdists как для pytest, так и для его setup.py зависимости," py ". – Carl Meyer 1 July 2013 в 20:36
  • 5
    Я думаю, что это должно быть: --find-links file:/path/to/some/dir/, и вы должны скачать и установить с той же версией pip - иначе это может быть неудачно – A. Binzxxxxxx 14 August 2015 в 08:17

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

2
ответ дан Umut Gunebakan 21 August 2018 в 13:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: