gpt4 book ai didi

python - __init__.py 在同一目录中找不到模块

转载 作者:太空狗 更新时间:2023-10-29 22:21:00 28 4
gpt4 key购买 nike

<分区>

我需要有关如何在 python 包中组织源代码的帮助 - 我已经在网上学习了几个教程(尤其是 this one )关于如何这样做,但它并没有像解释的那样工作,也没有像我想象的那样工作.

我想创建一个名为 binaryio 的 python 包。它应该提供两个名为 BinaryReaderBinaryWriter 的类,我希望用户能够使用它们导入

from binaryio import BinaryReader
from binaryio import BinaryWriter

因此我创建了我的存储库和包目录结构如下:

  • binaryio(存储库根目录)
    • binaryio(包根目录)
      • __init__.py(见下文)
      • binaryreader.py(包含 BinaryReader 类)
      • binarywriter.py(包含 BinaryWriter 类)
    • setup.py(包含 setuptools.setup 调用)
    • .gitignore, README.md, LICENSE, ...

如您所见,这些类位于单独的文件中,正如我习惯的那样(来自 C# 背景)。我不确定这是否是个好主意,因为模块是 Python 中的“单元”——但是将所有类压缩到一个巨大的文件中对我来说似乎不合逻辑。

__init__.py 看起来像下面这样导入这些类,使得(据我了解)from binaryio import BinaryReader 稍后用户可以导入:

from binaryreader import BinaryReader
from binarywriter import BinaryWriter

但是,当我在本地安装软件包(似乎工作正常)并尝试import binaryio 时,出现以下错误:

>>> import binaryio
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\Projects\Git\binaryio\binaryio\__init__.py", line 1, in <module>
from binaryreader import BinaryReader
ModuleNotFoundError: No module named 'binaryreader'

显然,我的 __init__.py 文件有问题。我不明白这一点,因为 binaryreader.py 文件又名模块存在于您在上面看到的同一文件夹中。有趣的是,我的 IDE(PyCharm,已将包根设置为源文件夹)不会提示其中的语句并且可以解析所有引用。

我在这里做错了什么?根据上面链接的教程,将一个文件放入 xyz.py 中,其中包含一个名为 Abc 的类,然后将 from xyz import Abc 写入 __init__.py 应该可以,但显然不适合我。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com