Установка пакетов Python из папки локальной файловой системы в virtualenv с помощью pip
можно ли установить пакеты с помощью pip из локальной файловой системы?
Я python setup.py sdist для моего пакета, который создал соответствующий tar.файл GZ. Этот файл хранится в моей системе по адресу /srv/pkg/mypackage/mypackage-0.1.0.tar.gz.
теперь в виртуальной среде я хотел бы установить пакеты, поступающие из pypi или из определенного локального местоположения /srv/pkg.
это возможно?
PS
Я знаю, что могу указать pip install /srv/pkg/mypackage/mypackage-0.1.0.tar.gz. Эта воля работа, но я говорю об использовании /srv/pkg расположение как еще одно место для поиска pip, если я набрал pip install mypackage.
6 ответов:
Я уверен, что то, что вы ищете называется .
хотя вам может понадобиться создать фиктивный
index.htmlдля вашего локального индекса пакета, в котором перечислены ссылки на все пакеты. Этот инструмент помогает:
что о::
pip install --help ... -e, --editable <path/url> Install a project in editable mode (i.e. setuptools "develop mode") from a local project path or a VCS url.например,
pip install -e /srv/pkgгде /srv/pkg-это каталог верхнего уровня, где 'setup.py-можно найти.
Это очень просто. Вам нужна команда:
pip install -e <DIRECTORY>обратите внимание, что каталог должны есть в нем
Я установка
pyfuzzyно это не в PyPI; он возвращает сообщение:No matching distribution found for pyfuzzy.я попробовал принятый ответ
pip install --no-index --find-links=file:///Users/victor/Downloads/pyfuzzy-0.1.0 pyfuzzyно он также не работает и возвращает следующую ошибку:
игнорирование индексов:https://pypi.python.org/simple Сбор pyfuzzy Не удалось найти версию, удовлетворяющую требованию pyfuzzy (из версий: ) Не найдено соответствующего распределения для пифаззи
наконец-то я нашел простой хороший путь туда:https://pip.pypa.io/en/latest/reference/pip_install.html
Install a particular source archive file. $ pip install ./downloads/SomePackage-1.0.4.tar.gz $ pip install http://my.package.repo/SomePackage-1.0.4.zipтак что следующая команда работала для меня:
pip install ../pyfuzzy-0.1.0.tar.gz.надеюсь, что это может помочь вам.
это решение, я в конечном итоге с помощью:
import pip def install(package): # Debugging # pip.main(["install", "--pre", "--upgrade", "--no-index", # "--find-links=.", package, "--log-file", "log.txt", "-vv"]) pip.main(["install", "--upgrade", "--no-index", "--find-links=.", package]) if __name__ == "__main__": install("mypackagename") raw_input("Press Enter to Exit...\n")Я собрал это вместе из pip install examples а также с ответ Рикарда on еще вопрос. Аргумент "--pre " позволяет устанавливать непроизводственные версии. Аргумент "--no-index " позволяет избежать поиска индексов PyPI. На " - найти-ссылки=."поиск аргументов в локальной папке (это может быть относительным или абсолютным). Я использовал "--log-file", " log.txt", и "-vv" аргументы для отладки. Аргумент "--upgrade"позволяет устанавливать новые версии поверх старых.
Я также нашел хороший способ, чтобы удалить их. Это полезно, когда у вас есть несколько различных окружений Python. Это тот же самый базовый формат, просто используя "удалить" вместо "установить", с мерой безопасности для предотвращения непреднамеренного удаления:
import pip def uninstall(package): response = raw_input("Uninstall '%s'? [y/n]:\n" % package) if "y" in response.lower(): # Debugging # pip.main(["uninstall", package, "-vv"]) pip.main(["uninstall", package]) pass if __name__ == "__main__": uninstall("mypackagename") raw_input("Press Enter to Exit...\n")локальная папка содержит следующие файлы: install.py, uninstall.py, mypackagename-1.0.молнии
опции -- find-links делает работу, и он работает с !
вы можете поместить архивы пакетов в какую-либо папку и взять последнюю, не изменяя файл требований, например
requirements:. └───requirements.txt └───requirements ├───foo_bar-0.1.5-py2.py3-none-any.whl ├───foo_bar-0.1.6-py2.py3-none-any.whl ├───wiz_bang-0.7-py2.py3-none-any.whl ├───wiz_bang-0.8-py2.py3-none-any.whl ├───base.txt ├───local.txt └───production.txtсейчас
requirements/base.txtпоставить:--find-links=requirements foo_bar wiz_bang>=0.8аккуратный способ обновления проприетарных пакетов, просто поместите новый в папку
таким образом, вы можете установить пакеты от
local folderиpypiС таким же один звонок:pip install -r requirements/production.txtPS. Смотрите мой cookiecutter-djangopackage вилка, чтобы увидеть, как разделить требования и использовать организацию требований на основе папок.
Comments