#python #pip #setuptools #pypi #devpi
#python #pip #setuptools #pypi #devpi
Вопрос:
У меня есть частный пакет, который я загрузил на свой частный сервер devpi. Когда я использую pip для его установки, устанавливается только папка egg. Исходный код отсутствует, и, следовательно, я не могу использовать какой-либо код или библиотеки в моем пакете.
Мой setup.py
:
from setuptools import setup, find_packages
setup(
name='my-package',
version=1.0,
packages=find_packages(),
install_requires=[
'requests>=2.21.0',
]
)
Для всего этого я использую venv в Pycharm. Почему это происходит? Как я могу заставить pip загрузить и установить исходный дистрибутив?
[РЕДАКТИРОВАТЬ] Когда я загружаю архив с моего пользовательского интерфейса сервера devpi, он НЕ содержит исходный код. Это означает, что когда я загружаю пакет с devpi upload
, он не загружает sdist? Я не смог найти ничего о том, как заставить devpi принудительно загружать sdist.
Вот журнал сборки:
running sdist
running egg_info
writing ****.egg-info/PKG-INFO
writing dependency_links to ****.egg-info/dependency_links.txt
writing requirements to ****.egg-info/requires.txt
writing top-level names to ****.egg-info/top_level.txt
reading manifest file '****.egg-info/SOURCES.txt'
writing manifest file '****.egg-info/SOURCES.txt'
running check
warning: Check: missing required meta-data: url
warning: Check: missing meta-data: either (author and author_email) or (maintainer and maintainer_email) must be supplied
creating ...
creating ***.egg-info
creating ***-1.0/client
creating ***-1.0/client/model
copying files to ***-1.0...
copying README.md -> ****-1.0
copying setup.py -> ****-1.0
copying ****.egg-info/PKG-INFO -> ****-1.0/****.egg-info
copying ****.egg-info/SOURCES.txt -> ****-1.0/****.egg-info
copying ****.egg-info/dependency_links.txt -> ****-1.0/****.egg-info
copying ****.egg-info/requires.txt -> ****-1.0/****.egg-info
copying ****.egg-info/top_level.txt -> ****-1.0/****.egg-info
copying the actual source here
Writing ****-1.0/setup.cfg
Creating tar archive
removing '****-1.0' (and everything under it)
Комментарии:
1. Что
python -c "from setuptools import find_packages; print(find_packages())
выводится при его выполнении в корне проекта? Все ли пакеты собраны правильно?2. Да, кажется, все работает нормально — [‘client’, ‘client.model’]
3. Можете ли вы прикрепить полный журнал сборки? Если встроенное яйцо / колесо содержит все исходники, возможно, вам просто нужно повторно загрузить его.
4. добавлены журналы сервера
5. Теперь проверьте, содержит ли исходный файл dist код, например,
tar tvf dist/pkg-ver.tar.gz
. Если все в порядке, повторно загрузите его черезdevpi upload dist/pkg-ver.tar.gz
, убедитесь, что файл был изменен на сервере (путем проверки журнала сервера или проверки в веб-интерфейсе, если он у васdevpi-web
запущен) и повторите попытку установки. Убедитесь, что вы используете правильный индекс, и индексvolatile=True
установлен, если ваша загрузка перезапишет существующую версию пакета.
Ответ №1:
Это исправлено:
devpi upload dist/pkg-ver.tar.gz
В принципе, запустите его из корня моего проекта.