Setuptools python - проблема импорта внутри проекта - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь создать простой проект, а затем подготовить его для создания файла whl.Но после pip install <name>.whl у меня странная проблема с импортом.Структура проекта:

foo/
    /foo
        __init__.py
        main.py
        bar.py
    setup.py

файл setup.py:

from setuptools import setup, find_packages

setup(
    name='foo',
    version='0.0.1',
    packages=find_packages(),
    include_package_data=True,
    entry_points={'console_scripts': ['foo=foo.main:func1']}
)

main.py

from bar import func2

def func1():
    print('func1')
    func2()

bar.py

def func2():
    print('func2')

У меня есть пустой файл инициализации.

Я создаю whl-файл по команде: python3 setup.py bdist_wheel, а затем cd dist/ && pip install ...

Но когда я запускаю скрипт по foo, я получаю ошибку:

ModuleNotFoundError: Нет модуля с именем 'bar'

Эта проблема существует, только когда я разбил проект на несколько файлов, когда я пытался сохранить все в main.py (удаленный bar.py) без импортатогда это сработало.

Есть идеи, как мне изменить setup.py?

1 Ответ

0 голосов
/ 02 января 2019

Проблема с вашим импортом , а не с setup.py.Происходит следующее: ваш setup.py устанавливает пакет foo, который имеет подмодули main и bar.

Чтобы импортировать функцию из подмодуля, вы делаете что-то вроде:

from foo.bar import func2

или, если вы делаете относительный импорт пакетов (например, импортируете bar из main):

from .bar import func2

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

...