Установка пакетов 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.

1441   6  

6 ответов:

Я уверен, что то, что вы ищете называется .

хотя вам может понадобиться создать фиктивный index.html для вашего локального индекса пакета, в котором перечислены ссылки на все пакеты. Этот инструмент помогает:

https://github.com/wolever/pip2pi

что о::

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.txt

PS. Смотрите мой cookiecutter-djangopackage вилка, чтобы увидеть, как разделить требования и использовать организацию требований на основе папок.

Comments

    Ничего не найдено.