在PyPI上发布时绝对导入中断

2024-05-29 03:34:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我在PyPI上发布了一个python包,我的文件结构如下:

- setup.py
- example.py
- ...
- igloo
  - __init__.py
  - ...
  - models
    - __init__.py
    - user.py
    - ...

在文件igloo/__init__.py中有一个import语句

from igloo.models.user import User

当我从example.py文件导入包igloo(导入解析为文件夹igloo)时,一切都按预期工作,但是当我从pip安装包并导入它时,我在文件igloo/__init__.py的导入行上得到错误ModuleNotFoundError: No module named 'igloo.models'。在这两种情况下,我都是这样导入包的:

from igloo import Client

setup.py文件是这样的

from distutils.core import setup
setup(
    name='igloo-python',         # How you named your package folder (MyLib)
    packages=['igloo'],   # Chose the same as "name"
    version='0.9.3',
    license='MIT',
    description='Python client for igloo',
    author='Igloo Team',
    author_email='hello@igloo.ooo',
    url='https://github.com/IglooCloud/igloo_python',  
    download_url='https://github.com/IglooCloud/igloo_python/archive/v_09.tar.gz',
    keywords=['iot', 'igloo'],
    install_requires=[
        'requests', 'asyncio', 'pathlib', 'websockets', 'aiodataloader'
    ],
    classifiers=[
        'Development Status :: 5 - Production/Stable',
        'Intended Audience :: Developers',
        'Topic :: Software Development ',
        'License :: OSI Approved :: MIT License  ',
        'Programming Language :: Python :: 3',
    ],
)

我还尝试将igloo/__init__.py中的导入替换为

from .models.user import User

在这种情况下,同样的错误也会弹出


Tags: 文件namefrompyimportinitmodelsexample

热门问题