В настоящее время создается программа, для которой требуются определенные пакеты. Я создал несколько скриптов, которые автоматически устанавливают их из папки. Локально (с Интернетом) это работает нормально, но на сервере (без Интернета) он пытается подключиться к Интернету.
Я поместил пакеты в папку и ссылаюсь на эту папку в скрипте Python.
Следующий код работает локально, но не на сервере:
import os
os.chdir(os.path.dirname(os.getcwd()))
importpath = os.getcwd() + '\Packages'
os.chdir(importpath)
try:
from openpyxl import load_workbook
print('Openpyxl is already installed')
except ImportError:
from pip._internal import main as pip
pip(['install', '--user', 'openpyxl-2.5.11.tar.gz'])
from openpyxl import load_workbook
Как сделать так, чтобы PIP устанавливался только из определенного tar.gz и не пытался подключиться к Интернету?
Обновлено: пути установки должны быть относительными
Используйте аргумент --find-links
.
В следующем примере пакет устанавливается из текущего каталога, и все зависимости будут найдены в ~/packages
.
pip3 install --find-links=~/packages .
Я забыл упомянуть, что путь должен быть относительным. Дело в том, что я определяю относительный путь вверху моего скрипта. Он также обрабатывает tar.gz из этого конкретного пути
Примерно так: pip(['install', '--user', '--find-links=' + os.getcwd() + '\Packages', 'openpyxl-2.5.11.tar.gz'])
Ломается при сборе jdcal
. Вы уверены, что этот jdcal
находится в вашей локальной папке packages
?
Я вручную установил его, и теперь он работает. Пришлось проделать то же самое с пандами. Спасибо за вашу помощь Виноград
привет @grapes, спасибо, но по-прежнему появляется эта ошибка: py: URL-адрес '~ / Packages' игнорируется. Это либо несуществующий путь, либо отсутствует конкретная схема.