#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"])