无法从uszipcode的__init__.py导入SearchEngine类的原因排查
问题分析:ImportError: cannot import name 'SearchEngine' from 'uszipcode'
安装
uszipcode模块后未修改任何文件,运行from uszipcode import SearchEngine时出现报错:ImportError: cannot import name 'SearchEngine' from 'uszipcode' (d:\Programs\Anaconda\lib\site-packages\uszipcode\__init__.py)
模块的__init__.py内容如下:from ._version import __version__ __short_description__ = ( "USA zipcode programmable database, includes " "2020 census data and geometry information." ) __license__ = "MIT" __author__ = "Sanhe Hu" __author_email__ = "husanhe@gmail.com" __maintainer__ = "Sanhe Hu" __maintainer_email__ = "husanhe@gmail.com" __github_username__ = "MacHu-GWU" try: from .search import ( SearchEngine, SimpleZipcode, ComprehensiveZipcode, ZipcodeTypeEnum, SORT_BY_DIST, ) except ImportError as e: # pragma: no cover print('hey', e) except: # pragma: no cover raise
成因分析
- 模块安装不完整:
uszipcode包的核心文件search.py缺失或损坏,导致__init__.py无法从相对路径.search导入SearchEngine类。__init__.py明确依赖该文件,若它不存在或内容异常,直接触发导入失败。 - 依赖缺失:
search.py自身依赖的第三方库未安装,导致search.py无法被正常加载,进而引发__init__.py的导入错误。虽然__init__.py捕获了ImportError并打印提示,但如果脚本运行时未输出该提示,就会表现为找不到SearchEngine。 - 环境冲突:当前Python环境中存在同名的
uszipcode文件或文件夹(比如工作目录下自己创建的uszipcode.py),Python会优先导入这些本地文件,而非site-packages中的官方包,导致无法找到正确的SearchEngine。
内容的提问来源于stack exchange,提问作者Saeed
相关产品推荐
相关产品推荐

