У меня мало проектов с несколькими классами, которые я разработал, чтобы интегрировать кратные услуги и серверы. Эти классы Частный
Для моего бизнеса, и теперь мне нужен простой способ позволить всем проектам использовать его и загрузить его и все его обновления.
Как лучше? Ну, мы все используем Пип
Каждый раз, когда загружать тысячи пакетов к нашим проектам и потрясающе.
Так что мы можем сделать с нашим собственным Частный
репо Давайте разместим свой проект на 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”