PyPI - пакет не содержит файлов

1

Я следовал этому руководству, чтобы загрузить пакет в PyPI. Мой пакет теперь загружен в тестовый экземпляр индекса: https://test.pypi.org/project/ilya-ezplots/#files. Однако, когда я устанавливаю его с помощью pip, я все равно не могу его импортировать.

>>> import ilya_ezplots
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'ilya_ezplots'

Я проверил пакеты сайтов моего интерпретатора Python и нашел только ilya_ezplots-0.0.2.dist-info. Для других пакетов будет две директории, например, h5py-2.9.0.dist-info и h5py.

Мой setup.py:

import setuptools

setuptools.setup(
    name="ilya_ezplots",
    version="0.0.2",
    packages=['plots'],
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ],
)

Загрузить скрипт:

#!/usr/bin/env bash

rm -r dist
python setup.py sdist bdist_wheel
python -m twine upload -r testpypi dist/* -u ikamensh

Структура файла:

./
./plots/__init__.py
./setup.py
./upload.sh
  • 1
    У меня такая же проблема...
  • 0
    Я думаю, что вы должны создать ./ilya_ezplots/__init__.py не ./plots/__init__.py
Теги:
pip
pypi
setuptools

2 ответа

1

Позвольте мне указать вам на мой предыдущий ответ: qaru.site/questions/17281424/...

ilya_ezplots - это имя вашего дистрибутива, но не импортируемое имя. Импортируемое имя после установки - plots. Так:

import plots
  • 0
    Я последовал вашему совету и переименовал каталог в «ilya_ezplots / ilya_ezplots / __ init__.py», но только « init .py» и никаких других файлов в версии PyPI моего пакета нет. Есть идеи?
  • 0
    Это был не мой совет. Я ответил на ваш вопрос об импорте. Если у вас есть новый вопрос с новой структурой каталогов, лучше задать новый вопрос, показать структуру каталогов и содержимое setup.py .
0

Как ответил @phd, вы должны импортировать: import plots.

или вы должны изменить структуру каталогов на:

./ilya_ezplots/__init__.py

И тогда import ilya_ezplots может сделать import ilya_ezplots дело.

Имя импорта должно соответствовать родительскому каталогу.

Обратитесь к этому сообщению, чтобы сохранить правильную структуру и передовой опыт.

Хорошей практикой является поддержание некоторого пространства имен или того же имени каталога, что и имя вашего пакета, чтобы пользователь не запутался.

если ваш проект называется xyz вы должны сохранить имя каталога как xyz. Таким образом, использование может выполнить import xyz для импорта вашего пакета и не будет перепутано с другим пакетом. Например, если вы используете yyy качестве имени каталога (а имя вашего пакета - xyz), тогда пользователи могут запутаться и вместо этого установить пакет yyy.

Один реальный пример из жизни:

Пакет Beautifulsoup нуждается в import bs4 чтобы импортировать его, и, следовательно, он поддерживает пакет bs4 (фиктивный пакет), чтобы никто не мог создать пакет с именем bs4 поскольку это может стать угрозой безопасности.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню