代码之家  ›  专栏  ›  技术社区  ›  reza

导入时,私有/自定义包中的类不可调用

  •  1
  • reza  · 技术社区  · 3 年前

    我有一个git repo,其中包含我的自定义python包。 我使用pip安装它

    pip install git+https://github.com/xxxx/my-package.git
    

    包名称是mytest 该代码位于src/mytest下,包含3个文件

    simple.py
    def add_one(number):
        return number + 1
    
    hard.py
    def add_one(number):
        return number + 1
    
    myclass.py
    class MyClass:
        def __init__(self, something):
    

    我打开一个python外壳,然后键入

    from mytest import simple, hard
    simple.add_one(1)
    hard.add_one(1)
    

    到目前为止还不错,然后我在使用MyClass时遇到了麻烦

    from mytest import MyClass
    
    mportError: cannot import name 'MyClass' from 'mytest' 
    

    为什么它只适用于简单的函数而不适用于类? 我错过了什么?

    0 回复  |  直到 3 年前
        1
  •  1
  •   lemonhead    3 年前

    您正试图直接从包而不是(子)模块导入类。您想要:

    from mytest import myclass 
    

    然后可以使用实例化 myclass 命名空间,即。

    kls = myclass.MyClass(...)
    

    与您的功能相同

    或者,如果要引用 MyClass 可以直接使用

    from mytest.myclass import MyClass
    kls = MyClass(...)