Python создает пакет pip - модуль не найден - PullRequest
0 голосов
/ 26 сентября 2019

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

Однако после установки, когда я пытаюсь импортировать пакет, я получаю сообщение об ошибке ModuleNotFoundError:

Ниже приведен код

hello_world.py

class HelloWorld:
    def print_msg(self):
        print("Hello World")

setup.py

from setuptools import setup, find_packages
setup(
    name = "HelloWorld",
    version = "0.1",
    packages = find_packages(),
)

создать пакет

▶ python setup.py bdist_wheel
running bdist_wheel
running build
installing to build/bdist.macosx-10.14-x86_64/wheel
running install
running install_egg_info
running egg_info
writing HelloWorld.egg-info/PKG-INFO
writing dependency_links to HelloWorld.egg-info/dependency_links.txt
writing top-level names to HelloWorld.egg-info/top_level.txt
reading manifest file 'HelloWorld.egg-info/SOURCES.txt'
writing manifest file 'HelloWorld.egg-info/SOURCES.txt'
Copying HelloWorld.egg-info to build/bdist.macosx-10.14-x86_64/wheel/HelloWorld-0.1-py3.7.egg-info
running install_scripts
creating build/bdist.macosx-10.14-x86_64/wheel/HelloWorld-0.1.dist-info/WHEEL
creating 'dist/HelloWorld-0.1-py3-none-any.whl' and adding 'build/bdist.macosx-10.14-x86_64/wheel' to it
adding 'HelloWorld-0.1.dist-info/METADATA'
adding 'HelloWorld-0.1.dist-info/WHEEL'
adding 'HelloWorld-0.1.dist-info/top_level.txt'
adding 'HelloWorld-0.1.dist-info/RECORD'
removing build/bdist.macosx-10.14-x86_64/wheel

Установка пакета

~/PycharmProjects/test_dist ▶ pip install dist/HelloWorld-0.1-py3-none-any.whl
Processing ./dist/HelloWorld-0.1-py3-none-any.whl
Installing collected packages: HelloWorld
Successfully installed HelloWorld-0.1

~/PycharmProjects/test_dist ▶ pip freeze
HelloWorld==0.1

Ошибка при импорте модуля

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

1 Ответ

0 голосов
/ 26 сентября 2019

Где hello_world.py?Это в корневой папке рядом с setup.py?Или в каком-то подкаталоге?Я подозреваю, что первый.Это означает, что у вас нет пакетов, поэтому find_packages() возвращает пустой список, поэтому setuptools не упаковывайте любой код в пакет.

Ваш hello_world.py не является пакетами (каталог сфайл __init__.py), это отдельный модуль, и такие модули должны быть упакованы с использованием py_modules.Вот как вы должны написать свой setup.py:

from setuptools import setup

setup(
    name = "HelloWorld",
    version = "0.1",
    py_modules = ['hello_world'],
)
...