【问题标题】:How does one export camelcase class names in a python package?如何在 python 包中导出驼峰类名?
【发布时间】:2022-01-11 22:00:18
【问题描述】:

我正在创建一个 python 包,它有一个名为 testclass 的文件。在里面,我有

class TestClass:
     def __init__(self)
         print ("hello world")

我有一个 setup.py 文件,非常简单,只有必填字段。

为了构建这个包,我运行python3 - build

我从 git repo pip install git+https://github.com/... 安装这个包 包名称是 mypackage。 在我写的测试文件中

from mypackage import testclass
a = TestClass()

我得到了错误

NameError: name 'TestClass' is not defined

为了解决这个错误,我说testclass.TestClass。 有没有办法简单地说

a = TestClass()

我看到很多标准包安装在我的机器上,它们带有一个包目录和一个 *-1.1.1.dist-info 目录。使用这些包不需要在使用导出的类之前提及文件名,例如a = TestClass()

this目录的内容来自哪里,可以创建?

【问题讨论】:

    标签: python-3.x package


    【解决方案1】:

    使用from mypackage.testclass import TestClass

    或者,您可以使用以下代码在mypackage 下创建一个__init__.py 文件:

    from .testclass import TestClass
    

    然后你可以使用

    from mypackage import TestClass
    

    【讨论】:

    • 当我在 init.py 中添加上述行时,出现错误:TypeError: __init__() missing 1 required positional argument: 'region_name'
    • @reza 这是一个源自 testclass.py 的无关错误
    • 你说的完全正确,我的疏忽。在 init 文件中添加推荐条目不会改变任何内容。在我使用类的文件中,我还是要说 from mypackage.testclass import TestClass
    • 添加后的新目录树是什么?
    • 我的包名目录下已经有一个 init.py。我刚刚添加了该行。 src/mypackage/__init__.py 和我的 testclass.py 在同一个目录下。
    猜你喜欢
    • 2020-11-25
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 2019-08-19
    • 2015-02-01
    • 1970-01-01
    相关资源
    最近更新 更多