Установленный пакет Python дает ModuleNotFoundError - PullRequest
0 голосов
/ 02 февраля 2019

Я отправил пакет в pypip и затем успешно установил его.Так как я нахожусь на anaconda, я могу сделать conda list и подтвердить, что мой пакет установлен в базовой среде.

Далее я хочу использовать его:

from epicprint import Print

Но это выдает ModuleNotFoundError: Нет модуля с именем 'epicprint'

Я предполагаю, что у меня есть какая-то ошибка в структуре моего пакета.Это работает в моем файле test.py, что странно.Пожалуйста, смотрите файлы в репозитории ниже:

Print.py

import os
import sys

# Glorious print with color and grouping
class Print(object):
    ...

__ init __. Py

from Print import Print

setup.py

import setuptools
with open("README.md", "r") as fh:
    long_description = fh.read()
setuptools.setup(
     name='epicprint',  
     version='0.1',
     author="abc",
     author_email="abc@abc.com",
     description="Custom print with superpowers",
     url="https://github.com/ajthinking/print",
     packages=setuptools.find_packages(),
     classifiers=[
         "Programming Language :: Python :: 3",
         "License :: OSI Approved :: MIT License",
         "Operating System :: OS Independent",
     ],
 )

test.py

from Print import Print

print = Print()

print.info("Welcome").group()
print.success("Now we can:", ["Indent stuff", "Use colors", "Attach semantic to the print statements"])
print.warning("Nothing more to say")
print.reset().fail("Ending with a fail message. Bye.")

Все файлы находятся в корне репозитория, кроме одного .whl и одного .tar.gz, найденных в папке dist, плюс папки build и egg-info после запускасценарий установки.

├── LICENSE
├── Print.py
├── README.md
├── __init__.py
├── __pycache__
│   └── Print.cpython-37.pyc
├── build
│   └── bdist.macosx-10.7-x86_64
├── dist
│   ├── epicprint-0.1-py3-none-any.whl
│   └── epicprint-0.1.tar.gz
├── epicprint.egg-info
│   ├── PKG-INFO
│   ├── SOURCES.txt
│   ├── dependency_links.txt
│   └── top_level.txt
├── setup.py
└── test.py

Где я ошибся?

1 Ответ

0 голосов
/ 03 февраля 2019

У вас нет каталога пакетов (подкаталог с __init__.py), поэтому setuptools.find_packages() возвращает пустой список, поэтому ваши дистрибутивы не содержат и не устанавливают какие-либо модули или пакеты python.

Либо вы устанавливаете Print.py как автономный модуль:

setuptools.setup(
    …
    # packages=setuptools.find_packages(),
    py_modules=['Print.py'],
    …
)

, либо перемещаете Print.py и __init__.py в подкаталог epicprint/, затем setuptools.find_packages() возвращает ['epicprint'] пакет и дистрибутивыпоймать его.

В последнем случае ваш test.py должен быть адаптирован:

from epicprint.Print import Print

Если вы хотите, чтобы test.py в epicprint/ пакет до вас.

...