- How to install Python libraries without Internet
- On the system that has access to internet
- Step 1: Download the Python Installer binaries
- Step 2: Run the Executable Installer
- Step 3: Install environment
- On the system that has NO access to internet
- Step 4: Install Python libraries
- Как установить модули python без интернета и pip?
- Python3 установка pip пакетов offline
- На машине с интернетом
- На машине без интернета
- Результат выполнения
- Установка из tar.gz или whl
- DevOps Notes
- Готовим нужные пакеты ¶
- Устанавливаем в окружении без Интернета ¶
- Локали ¶
How to install Python libraries without Internet
Hello everyone, today we are going to explain how to Install python libraries without internet.
Let us assume that we have started working in the IT Ingestion department where is No internet connectivity at all or there is restricted internet connectivity for the workstations.
We could only download files from the internet but this goes through a security scan before allowing us to download the file.
In this situation we couldn’t use the Python default package manager pip to get the packages from PyPI (Python Package Index) directly and install them in our Python environments.
In the workstation we have installed only python3 with 32 bits and no more else.
As an example I want to install pandas without internet on the terminal.
On the system that has access to internet
Step 1: Download the Python Installer binaries
- Open the official Python website in your web browser. Navigate to the Downloads tab for Windows.
- Choose the latest Python 3 release. In our example, we choose the latest Python 3.8 version.
- Click on the link to download Windows x86 executable installer if you are using a 32-bit installer.
In this project I will use Python 3.8
Step 2: Run the Executable Installer
- Once the installer is downloaded, run the Python installer.
- We do not need Install launcher for all users check box. Further,we dont need check the Add Python 3.8 to path to include the interpreter in the execution path because we will do mannually
and we copy the path where says Start in
Step 3: Install environment
After Python is installed we go to the terminal and paste our location from our copied address, for example
set path=C:\Users\YOUR_USERNAME\AppData\Local\Programs\Python\Python38-32\Scripts;%path%
The above should set your 32 bit to be found before your 64 bit.
We can updating pip type the following command in terminal or cmd or powershell
python -m pip install --upgrade pip
we create a folder called win32
you activate the new environment
cd internet/Scripts/ activate cd .. cd ..
if you are in linux is simply
source yesinternet/Scripts/activate
we create a file requirements.txt
pip list --format=freeze > requirements.txt
pip download -r requirements.txt -d "./dependencies"
tar cvfz dependencies.tar.gz dependencies
pip download -r requirements.txt -d "./dependencies"
tar cvfz dependencies.tar.gz dependencies
On the system that has NO access to internet
Step 4: Install Python libraries
Once you transfer the dependencies.tar.gz to the machine which does not have internet you would do:
First we need to create an environment
tar zxvf dependencies.tar.gz
Как установить модули python без интернета и pip?
Возникла проблема, есть основной пк на котором есть интернет и pip, но пакеты нужно установить на компьютер, на котором нет интернета, и нет возможности установить pip.
Средний 2 комментария
Web Dentist, насколько я понял там для установки .whl используется pip, а у меня его нет возможности установить.
Kostyan4ik, почему это нет возможности? С питоном всегда можно найти какую-нибудь возможность.
Вот, к примеру, вы можете на том компе, где есть питон и интернет, скачать все необходимые пакеты с помощью того же pip:
pip download pip
Так вы можете скачать все необходимые пакеты и принести их на машину без инета просто на флешке.
А там:
python pip-20.1.1-py2.py3-none-any.whl/pip install pip-20.1.1-py2.py3-none-any.whl
Тут происходит маленькая магия: вы с помощью питона запускаете pip прямо изнутри локально лежащего файла с его дистрибутивом. Этим pip’ом вы ставите самого себя на локальную машину. Примерно как Барон Мюнхаузен, но не больно.
Вы также можете сохранить перечень всех установленных пакетов на компе с инетом в текстовый файл, а потом, убрав из него лишнее, скачать все эти пакеты в локальный каталог, отнести на оффлайн-комп и там ставить через тот же pip
pip freeze > r.txt pip download -r r.txt
Python3 установка pip пакетов offline
Бывает необходимо установить пакеты для python на машине без интернета. Способов много, я выбрал для себя один, его и использую. «Легко» и «просто» можно скачать необходимые пакеты вместе с зависимостями и установить на другой машине, если сделать следующие.
На машине с интернетом
python3 -m venv vevn source venv/bin/active pip install pip --upgrade # директория для скачивания пакетов mkdir pkg cd pkg # отдельно скачиваю последнею версию pip pip download pip # скачиваю необходимые пакеты с зависимостями pip download -r ../requirements.txt
На машине без интернета
python3 -m venv vevn source venv/bin/active # устанавливаю ранее скаченный pip (версия может быть другая) pip install pkg/pip-20.1-py2.py3-none-any.whl # установка пакетов из списка requirements.txt, пакеты должны лежать в pkg (директория) pip install --no-index --find-links pkg -r requirements.txt
Результат выполнения
# вывод консоли у меня pip install --no-index --find-links pkg -r requirements.txt Looking in links: pkg Processing ./pkg/Flask-1.1.2-py2.py3-none-any.whl Processing ./pkg/Flask_WTF-0.14.3-py2.py3-none-any.whl Processing ./pkg/et_xmlfile-1.0.1.tar.gz Processing ./pkg/openpyxl-3.0.3.tar.gz Processing ./pkg/jdcal-1.4.1-py2.py3-none-any.whl Processing ./pkg/pylint-2.5.2-py3-none-any.whl Processing ./pkg/itsdangerous-1.1.0-py2.py3-none-any.whl Processing ./pkg/Jinja2-2.11.2-py2.py3-none-any.whl Processing ./pkg/Werkzeug-1.0.1-py2.py3-none-any.whl Processing ./pkg/click-7.1.2-py2.py3-none-any.whl Processing ./pkg/WTForms-2.3.1-py2.py3-none-any.whl Processing ./pkg/mccabe-0.6.1-py2.py3-none-any.whl Processing ./pkg/isort-4.3.21-py2.py3-none-any.whl Processing ./pkg/toml-0.10.1-py2.py3-none-any.whl Processing ./pkg/astroid-2.4.1-py3-none-any.whl Processing ./pkg/MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl Processing ./pkg/typed_ast-1.4.1-cp37-cp37m-manylinux1_x86_64.whl Processing ./pkg/wrapt-1.12.1.tar.gz Processing ./pkg/lazy_object_proxy-1.4.3-cp37-cp37m-manylinux1_x86_64.whl Processing ./pkg/six-1.14.0-py2.py3-none-any.whl Could not build wheels for et-xmlfile, since package 'wheel' is not installed. Could not build wheels for openpyxl, since package 'wheel' is not installed. Could not build wheels for wrapt, since package 'wheel' is not installed. Installing collected packages: itsdangerous, MarkupSafe, Jinja2, Werkzeug, click, Flask, WTForms, Flask-WTF, et-xmlfile, jdcal, openpyxl, mccabe, isort, toml, typed-ast, wrapt, lazy-object-proxy, six, astroid, pylint Running setup.py install for et-xmlfile . done Running setup.py install for openpyxl . done Running setup.py install for wrapt . done Successfully installed Flask-1.1.2 Flask-WTF-0.14.3 Jinja2-2.11.2 MarkupSafe-1.1.1 WTForms-2.3.1 Werkzeug-1.0.1 astroid-2.4.1 click-7.1.2 et-xmlfile-1.0.1 isort-4.3.21 itsdangerous-1.1.0 jdcal-1.4.1 lazy-object-proxy-1.4.3 mccabe-0.6.1 openpyxl-3.0.3 pylint-2.5.2 six-1.14.0 toml-0.10.1 typed-ast-1.4.1 wrapt-1.12.1
Мой файл requirements.txt для примера
Flask==1.1.2 Flask-WTF==0.14.3 et-xmlfile==1.0.1 openpyxl==3.0.3 jdcal==1.4.1 pylint==2.5.2
Установка из tar.gz или whl
# установка одного пакета из архива pip install ./pkg-name.tar.gz
DevOps Notes
Создадим виртуальное окружение для того, чтобы скачать все зависимости, но при этом не захватить ненароком лишнего. Поставим virtualenv.
python3 -m pip install --upgrade --user virtualenv python3 -m pip virtualenv venv
Готовим нужные пакеты ¶
Установив в чистом окружении только то, что нужно, мы заодно подтянем все зависимости, но кроме всего прочего, захватите с собой ещё setuptools и pip.
python3 -m pip install --upgrade pip setuptools ansible
python3 -m pip freeze > requirements.txt
Можно просто дописать pip и setuptools в requirements.txt без указания версий (если их вообще нет в списке)
1 2 3 4 5 6 7 8 9 10 11 12
ansible==3.4.0 ansible-base==2.10.11 cryptography==2.8 jinja2==2.11.3 netaddr==0.7.19 pbr==5.4.4 jmespath==0.9.5 ruamel.yaml==0.16.10 ruamel.yaml.clib==0.2.2 MarkupSafe==1.1.1 pip setuptools
python3 -m pip download --dest my-pip-packages -r requirements.txt
tar -cpvzf pips.tgz my-pip-packages requirements.txt
Устанавливаем в окружении без Интернета ¶
- Добавить sudo в начале
- Добавить аргумент —user к pip-у для установки пакетов только для пользователя выполняющего команду
tar -xpzvf pips.tgz python3 -m pip install --upgrade --no-index --find-links python-packages pip setuptools python3 -m pip install --upgrade --no-index --find-links my-pip-packages -r requirements.txt
Теперь можно запускать Ansible!
[email protected]:/host# ansible --version ansible 2.10.11 config file = None configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/local/lib/python3.6/dist-packages/ansible executable location = /usr/local/bin/ansible python version = 3.6.9 (default, Jan 26 2021, 15:33:00) [GCC 8.4.0]
Локали ¶
Случалось так, что в сильно урезанном окружении, как, к примеру, Docker Ubuntu 18.04, утановка пакетов падает со следующей ошибкой.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
ERROR: Exception: Traceback (most recent call last): File "/usr/local/lib/python3.6/dist-packages/pip/_internal/cli/base_command.py", line 173, in _main status = self.run(options, args) File "/usr/local/lib/python3.6/dist-packages/pip/_internal/cli/req_command.py", line 203, in wrapper return func(self, options, args) File "/usr/local/lib/python3.6/dist-packages/pip/_internal/commands/install.py", line 316, in run reqs, check_supported_wheels=not options.target_dir . File "/usr/local/lib/python3.6/dist-packages/pip/_internal/operations/prepare.py", line 249, in unpack_url unpack_file(file.path, location, file.content_type) File "/usr/local/lib/python3.6/dist-packages/pip/_internal/utils/unpacking.py", line 256, in unpack_file untar_file(filename, location) File "/usr/local/lib/python3.6/dist-packages/pip/_internal/utils/unpacking.py", line 226, in untar_file with open(path, "wb") as destfp: UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 117: ordinal not in range(128)
Решается установкой переменных окружения перед установкой пакетов.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
export LANGUAGE="" export LANG="C.UTF-8" export LC_CTYPE="C.UTF-8" export LC_NUMERIC="C.UTF-8" export LC_TIME="C.UTF-8" export LC_COLLATE="C.UTF-8" export LC_MONETARY="C.UTF-8" export LC_MESSAGES="C.UTF-8" export LC_PAPER="C.UTF-8" export LC_NAME="C.UTF-8" export LC_ADDRESS="C.UTF-8" export LC_TELEPHONE="C.UTF-8" export LC_MEASUREMENT="C.UTF-8" export LC_IDENTIFICATION="C.UTF-8" export LC_ALL="C.UTF-8"
Licensed under Apache License, Version 2.0
Обновлено Dec 25, 2022 19:15 +0200