ImportError 无法导入名称 - 非特定

ImportError Cannot import name - nonspecific

我制作了 python 包裹来自 https://github.com/raamana/pyradigm 并使用以下命令将其上传到 pip(按照 pypi 等上的说明进行操作):

python setup.py sdist bdist_wheel
twine upload dist/*

理论上,现在应该可以做到了

pip install pyradigm

(我可以确认有效)然后在 Python 文件中执行以下操作:

from pyradigm import MLDataset

使用 pyradigm

中的 class MLDataset


不幸的是,情况并非如此,因为 Python 抛出以下 ImportError 这是相当不具体的:

In [1]: from pyradigm import MLDataset
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-1-4ad7330da13e> in <module>()
----> 1 from pyradigm import MLDataset

ImportError: cannot import name MLDataset

我可以确认

  1. 我能够在新系统上通过 pip 安装 pyradigm
  2. pip 和 python 都能找到包(安装在站点包中),因为它们会自动填充模块名称(pyradigm 和 class 名称 MLDataset).

金字塔中的setup.py是这样的:

#!/usr/bin/env python
import os

from setuptools import setup, find_packages

# Utility function to read the README file.
def read(fname):
    return open(os.path.join(os.path.dirname(__file__), fname)).read()

setup(name='pyradigm',
      version='0.1.1.2',
      description='Python-based data structure to improve handling of datasets in machine learning workflows',
      long_description=read('README.md'),
      keywords='machine learning, test dataset, python, workflow, provenance, data structure',
      author='Pradeep Reddy Raamana',
      url='https://github.com/raamana/pyradigm',
      packages=find_packages(exclude=["*.tests", "*.tests.*", "tests.*", "tests"]), # packages=['pyradigm'],
      install_requires=['numpy', 'setuptools'],
     )

压缩包只有3个文件:

__init__.py      pyradigm.py      test_pyradigm.py

__init__.py 仅包含一行:

__all__ = [ 'pyradigm', 'MLDataset' ]

如能帮助理解此错误以及解决此错误的方法,我们将不胜感激。谢谢。

这是因为您在 pyradigm 包中有一个 pyradigm 模块。

我已经使用 pip install pyradigmvirtualenv 中安装了软件包,并使用

成功导入了 MLDataset
from pyradigm.pyradigm import MLDataset


如果你想导入为

from pyradigm import MLDataset

将您的 __init__.py 更新为

from pyradigm import MLDataset