自定义python包的相对导入失败

2024-05-18 07:14:23 发布

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

我有一个自定义Python包,其结构如下:

lisanode
|- __init__.py
|
|- compiler
|  |- __init__.py
|  |- graph.py
|  |- node.py
| 
|- toolbox
|  |- __init__.py
|  |- delays.py
\

以下是我在各种__init__.py文件中的内容(导入的类确实存在于各自的模块中):

# lisanode/compiler/__init__.py
from .graph import Graph
# lisanode/toolbox/__init__.py
from .delays import NestedDelays
# lisanode/__init__.py
from .compiler import Graph

我使用pip3:pip3 install -e .本地安装包

当我从lisanode目录执行包(作为入口点)中定义的命令行工具时,这非常有效。但是,当我尝试从项目目录外运行同一命令行时,出现了一个错误:

Traceback (most recent call last):
  File "/usr/local/bin/lisanode", line 11, in <module>
    load_entry_point('lisanode', 'console_scripts', 'lisanode')()
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 489, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2852, in load_entry_point
    return ep.load()
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2443, in load
    return self.resolve()
  File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2449, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/local/lib/python3.7/site-packages/lisanode/__init__.py", line 12, in <module>
    from .compiler import Graph
ModuleNotFoundError: No module named 'lisanode.compiler'

你知道为什么吗


Tags: inpyimportcompilerinitlibpackagesusr