Почему в pip install отсутствует исходный код моего пакета?

#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

В принципе, запустите его из корня моего проекта.