Рубрики
Без рубрики

Как создать пакет PIP, размещенный на Private Github Repo

Создание пакетов PIP и развертывание на частном репо, шаг за шагом. Теги с Python, PiP, пакетами, Github.

У меня мало проектов с несколькими классами, которые я разработал, чтобы интегрировать кратные услуги и серверы. Эти классы Частный Для моего бизнеса, и теперь мне нужен простой способ позволить всем проектам использовать его и загрузить его и все его обновления.

Как лучше? Ну, мы все используем Пип Каждый раз, когда загружать тысячи пакетов к нашим проектам и потрясающе.

Так что мы можем сделать с нашим собственным Частный репо Давайте разместим свой проект на Github и посмотрите, что происходит.

Эти статьи я пишу и поделитесь своим опытом о том, как это сделать. До дня этой статьи я понятия не имею, насколько это будет работать.

Давайте начнем наш учебный случай.

Первые шаги

На основании этого учебника: https://python-packaging.readthedocs.io/en/latest/minimal.html. Я создам свой первый пакет, готовый пойти в мое частное репо.

Создание корневого пути и начать Git

Во-первых, я создаю путь, называемый ptolemaios Это мое главное имя класса и начать новый Git на нем.

$ mkdir ptolemaios
$ cd ptolemaios
$ git init
> Initialized empty Git repository in '...ptolemaios/.git/'

Структура папок

На руководстве он говорит, что мне нужна эта структура папки:

ptolemaios/
    ptolemaios/
        __init__.py
    setup.py

Итак, давайте снова создадим еще одну папку под названием ptolemaios Внутри моих ptolemaios Папка … звучит немного запутанно.

$ mkdir ptolemaios

Создание основных файлов

и давайте создадим файлы setup.py и __init__.py.

$ touch setup.py
$ touch ptolemaios/__init__.py

Хорошо, теперь у меня именно структура на руководстве. Давайте совершим его и перейдем к следующим шагам.

$ git add .
$ git commit -am "created basic package structure files and folders"
> 2 files changed, 0 insertions(+), 0 deletions(-)
> create mode 100644 ptolemaios/__init__.py
> create mode 100644 setup.py

Пакет MVP

Как я хочу узнать, как это сделать, и проверить, работает ли, я начну с создания функции, которая просто что-то напечатает на моем экране.

давайте откроем наш __init__.py Файл и отредактировать его

def my_cool_test_method():
    print('It works!')

а также откроет наш setup.py и настроить основы о пакете

from setuptools import setup

setup(
    name='ptolemaios',
    version='0.0.1',
    description='My private package from private github repo',
    url='git@github.com:rfschubert/ptolemaios-sdk-package.git',
    author='Raphael Schubert',
    author_email='raphael.schubert@digitalbankscorp.com',
    license='unlicense',
    packages=['ptolemaios'],
    zip_safe=False
)

Вы можете настроить эти Infos со всеми, которые вы хотите.

давайте совершим его

$ git commit -am "updated setup.py and created my_cool_test_method"
> 2 files changed, 19 insertions(+)

Я уже создал свой частный репо на Github уже, так что теперь я добавлю его в проект и продвинул всех коммитов моего репо

$ git remote add origin git@github.com:rfschubert/ptolemaios-sdk-package.git
$ git push -u origin master
> Counting objects: 9, done.
> Delta compression using up to 8 threads.
> Compressing objects: 100% (6/6), done.
> Writing objects: 100% (9/9), 1.00 KiB | 514.00 KiB/s, done.
> Total 9 (delta 0), reused 0 (delta 0)
> To github.com:rfschubert/ptolemaios-sdk-package.git
>  * [new branch]      master -> master
> Branch 'master' set up to track remote branch 'master' from 'origin'.

Теперь я хочу добавить его в мой бегущий проект, чтобы увидеть, будет ли работать, я открою любой проект, который у меня на машине и попробую установить его от Github Использование Пип Отказ

Установка с PIP

Откройте наш терминал внутри проекта, который мы хотим установить его и запустить эту команду

$ pip install git+ssh://git@github.com/rfschubert/ptolemaios-sdk-package.git
> Collecting git+ssh://git@github.com/rfschubert/ptolemaios-sdk-package.git
>   Cloning ssh://git@github.com/rfschubert/ptolemaios-sdk-package.git to > /private/var/folders/7z/....
> Installing collected packages: ptolemaios
>   Running setup.py install for ptolemaios ... done
> Successfully installed ptolemaios-0.0.1

Здесь у нас мало важных вещей. Где я нашел это URL ?

Ну, это основной URL-адрес клона с несколькими модификациями.

Мой SSH URL URL: git@github.com: rfschubert/ptolemaios-sdk-package.git , посмотри на : на SSH URL, измените его на / и добавить Git + SSH:// на вашем SSH URL

Теперь вы должны иметь Git + SSH://git@github.com/rfschubert/ptolemaios-sdk-package.git , Это оно! просто делай PIP Установите Git + SSH://git@github.com/rfschubert/ptolemaios-sdk-package.git и будь счастлив!

Давайте проверим его на моем проекте.

Я пойду на Console Django Чтобы проверить это легко.

import ptolemaios

ptolemaios.my_cool_test_method()
# It works!

КЛАССНО! У меня сейчас есть частные пакеты в моем проекте.

Шаг назад

Ну, на моем компьютере все работает как шарм, но вот почему у меня есть SSH Клавиши для получения данных из частного репозитория. Как мой Heroku Приложение будет загружать его?

Сначала у меня будет команда обновить мой требования .txt файл

$ pip freeze > 'requirements.txt'

Теперь, если я смотрю внутрь этого, у него только мое имя пакета, а не URL Git

...
ptolemaios==0.0.1
...

Вам понадобится изменить эту строку на работу, как ожидается:

...
git+ssh://git@github.com/rfschubert/ptolemaios-sdk-package.git
...

Таким образом, когда ваш сервер развертывает, он будет привлечен из репозитория текущей версии.

Я нашел ответ, который может быть полезным для некоторых из вас, но не для меня, мне нужно сделать еще несколько исследований и обновлять этот файл позже.

Вы можете создать Пользователь машины на Github Добавьте его в вашу частную репос, генерируйте SSH ключ на вашем сервере и добавьте его в Пользователь машины Каждый раз, когда вы развертываете, ваш сервер будет иметь SSH ключ и будет разрешено загружать его.

Как развернуть в Heroku?

Я еще не знаю, но я узнаю а также Я вернусь … Давайте сделаем еще несколько исследований …

Оригинал: “https://dev.to/rf_schubert/how-to-create-a-pip-package-and-host-on-private-github-repo-58pa”