Каков наилучший способ загрузки пакета python и его зависимостей от pypi для автономной установки на другой машине? Есть ли простой способ сделать это с помощью pip или easy_install? Я пытаюсь установить библиотеку запросов в поле FreeBSD, которое не подключено к Интернету.Python Packages Offline Установка
ответ
Если пакет находится на 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
Некоторые пакеты, возможно, придется заархивировать в аналогичные выглядящие tarballs вручную. Я делаю это много, когда хочу более новую (менее стабильную) версию чего-то. Некоторые пакеты не относятся к 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
Таким образом ваше приложение будет выполняться прямо из исходного каталога. Вы можете взломать вещи, а затем повторно запустить приложение, не восстанавливая ничего.
Если вы хотите установить приложение и его зависимости в текущую среду питона, вы будете делать что-то вроде этого:
$ cd ~/src/myapp $ easy_install --always-unzip --allow-hosts=None --find-links=/pypi .
В обоих случаях сборка будет выполнена, если один или несколько зависимостей Арен» t присутствует в каталоге /pypi
. Он не будет пытаться беспорядочно устанавливать недостающие вещи из Интернета.
Я настоятельно рекомендую вызывать setup.py develop ...
и easy_install ...
в течение активного virtual environment, чтобы избежать загрязнения вашей глобальной среды Python. Это (virtualenv, что есть) в значительной степени путь. Никогда не устанавливайте ничего в глобальную среду Python.
Если машина, на которой вы создали свое приложение, имеет ту же архитектуру, что и машина, на которой вы хотите ее развернуть, вы можете просто архивировать всю директорию виртуальной среды, в которую вы ввели easy_install
, - все. Как раз перед тем, как сделать tarballing, вы должны сделать каталог виртуальной среды перемещаемым (см. Параметр --relocatable). ПРИМЕЧАНИЕ: машине назначения должна быть установлена одна и та же версия Python, а также любые зависимости на C, которые могут быть установлены вашим приложением (например, если вы зависите от PIL, тогда libpng, libjpeg и т. Д. Должны быть предустановленный).
Вместо '--allow-hosts = None' вы можете использовать переключатель' --no-index' – romor
Не могли бы вы рассказать о том, как создать правильно сформированное приложение Python? –
@PrabhjotRai см. Https://packaging.python.org/distributing/ –
Загрузите tarball, перенесите его на свою машину FreeBSD и извлеките, затем запустите python setup.py install
, и все готово!
EDIT: Просто добавьте это, вы также можете установить tarballs с помощью pip.
Как насчет всех зависимостей? Каков наилучший способ их решения? Нужно ли вручную устанавливать зависимости? –
Да, это, к несчастью, единственный способ узнать. – dav1d
Я использую -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 представляет собой файл требований к требованиям, в котором перечислены все необходимые вам пакеты (и, при необходимости, нужные версии).
устаревания: пип установить --download устарела и будет удален в будущем. Pip теперь имеет команду download, которая вместо этого должна быть .
Команда выглядит так:
pip download -r requirements.txt
Для Python3:
pip3 download -r requirements.txt
Проблема заключается в том, что зависимости могут иметь другие зависимости, и они не будут загружены. – vikki
[Змеиная корзина] (https://github.com/prezi/snakebasket) (построенная на вершине пипа) также загрузит зависимости зависимостей. – vikki
@vikki Неверно, «pip install --download» также загружает зависимости, поэтому приведенные выше команды будут работать корректно, даже если ваши требования имеют дополнительные зависимости. Змеиная корзина может делать другие полезные вещи (никогда не использовала ее), но это определенно не нужно по этой причине. –
Для Пип 8.1.2 вы можете использовать pip download -r requ.txt
для загрузки пакетов на локальном компьютере.
оффлайн python. для этого я использую virtualenv (изолированные среды Python)
1) установить virtualenv онлайн с пип:
pip install virtualenv --user
или в автономном режиме с WHL: перейти на эту link, скачать последнюю версию (.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
папки находятся там. загрузите пакеты со следующим кодом и поместите их в папку 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
, что находится в папке форума [requirements.txt, tranferred_packages {Колба-0.10.1.tar.gz, ...} ]
проверка список вашего пакета
pip list
примечание: как мы в 2017 году, то лучше использовать Python 3. йо u может создать python 3 virtualenv с помощью этой команды.
virtualenv -p python3 envname
Здесь, кажется, отсутствуют шаги или «обфускации», я ожидаю увидеть «деактивировать», а затем «pip freeze» ... cd offline и ./tranferred_packages появляется из ниоткуда - ясно, что это требует очистки? – Hannu
может быть, но вы должны подумать: «Я хотел короткую почту», «этот процесс был сложным, и я не мог писать каждый шаг (что только возможно на YouTube)». – cyera
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" *)
копия тарболом и установить:
$ 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
У меня были проблемы с подключением к компьютеру с Python 3.6 и извлечение из другого с помощью Python 3.5: «_
- 1. Offline Установка python & pip
- 2. Python mock offline автономная установка
- 3. Установка anaconda3 offline
- 4. apt-offline only install specific packages
- 5. Offline Установка пакетов R
- 6. Установка gcc offline
- 7. Установка плагинов для Eclipse offline
- 8. Модуль Python в пакетах «dist-packages» и «site-packages»
- 9. Разработка с Python Namespaced Packages
- 10. Codewars Python TDD offline
- 11. Установка Android SDK в eclipse offline
- 12. Затмение Juno Установка зависимостей (Offline Solution)
- 13. Offline Reverse Geocoding в Python
- 14. В buildout include-site-packages = false не исключает dist-packages
- 15. ubuntu python 3.4 no site-packages library
- 16. pip3 frpm /Library/Python/2.7/site-packages
- 17. python packages/tools для daemonize application
- 18. py2neo offline install failing
- 19. pip Packages - Manual Загрузить
- 20. Ошибка Nuget Packages Установка и восстановление «Круговая ссылка на»
- 21. Python 3 установка tweepy
- 22. duplicate packages
- 23. dist-packages и sys.path
- 24. Установка пакетов в Python - Pip/cmd vs Ввод файла в Lib/site-packages
- 25. Homebrew Python и запись в /Library/Python/2.7/site-packages/?
- 26. Установка базовых модулей Python
- 27. установка CDAT для Python
- 28. В чем разница между каталогами Python 'Extras' и 'site-packages'?
- 29. установка Python/Django не происходит
- 30. Python pip broken - установка Pelican
Связанный: [Как установить пакеты установки в соответствии с требованиями.txt из локального каталога?] (http://stackoverflow.com/q/7225900/95735) –