Рекомендуемый способ распространения моего пакета python без загрузки на PyPI

#python-3.x #pip #windows-10

Вопрос:

Я пытаюсь установить локальный пакет из исходного кода с помощью pip, но мой код не копируется в папку site-packages. Вместо этого создается папка с файлом json, ссылающимся на путь к моему исходному коду python. Является ли это ожидаемым поведением ? в чем разница с разницей при установке в режиме разработки (с флагом-e).

Мой рабочий путь выглядит так:

 ├── setup.py
└── my_package
    ├── __init__.py
    └── module.py
 

Мой setup.py файл выглядит так:

 import setuptools
setuptools.setup(name='my_package', version='0.0.1')
     
 

Я печатаю:

 python -m pip install .
 

а затем, когда я импортирую свой пакет на python, он сообщает мне, что импортированный пакет находится в моей папке с исходным кодом:

 >>> import my_package
>>> my_package.__file__
path/to/my/desktop
 

Каков был бы рекомендуемый способ распространения моего пакета среди моих коллег, не загружая его на PyPI ?
Также может кто-нибудь, пожалуйста, объяснить мне различия между .колесо, .tar.gz, и файлы .egg, которые могут быть созданы с помощью setuptools, и их вариант использования ?

Комментарии:

1. Вы проверили эту ссылку: packaging.python.org Существует множество ресурсов по теме упаковка.

2. В связи с вопросом «Каков был бы рекомендуемый способ распространения моего пакета среди моих коллег»: Вы можете указать pip для установки из различных источников. Какой источник может зависеть от того, что вы и ваши коллеги планируете сделать. Если они внесут свой вклад, я бы рекомендовал разрешить установку pip из CVS, например, из репозитория git, где my_package находится этот пакет. Ищите: duckduckgo.com/?q=pip установить из git репозитория

3. Спасибо за вашу помощь, я уже прочитал руководство по упаковке python. В руководстве упоминается, что вы можете установить из дерева исходных текстов, однако как в обычном режиме, так и в режиме разработки (флаг-e) пакет не копируется в пакет сайта с моей версией python (3.8). Моя цель в основном состоит в том, чтобы распространить мой пакет для других коллег, чтобы они могли его использовать. Я единственный, кто поддерживает мой код.

Ответ №1:

Я нашел решение, которое меня устраивает. Я генерирую .whl-файл из моего пакета с помощью команды

 python -m pip wheel .
 

В папке, содержащей setup.py.
Это порождает .файл whl, который мои коллеги могут установить с помощью команды

 python -m pip install .my_package-0.0.1-py3-none-any.whl
 

сжатие исходного кода (включая setup.py) тоже сработало бы, но выглядит менее чисто.

Также я выяснил, почему установка из исходного кода без флага-e не копировала мой код в папку «пакет сайта». Установка пакета создает две папки: папку «my_package-0.0.1.dist-info» и папку «my_module». Мне не хватало кварга «посылка» в моем setup.py сценарий, поэтому была создана папка с информацией о версии, но не папка, содержащая код. Здесь ниже исправлено setup.py

 import setuptools
setuptools.setup(name="my_package", version='0.0.1', packages=["my_package"])