【问题标题】:Python Custom package import module name not importing on initPython自定义包导入模块名称未在初始化时导入
【发布时间】:2020-11-06 19:22:19
【问题描述】:

我正在创建一个具有以下结构的自定义包:

test_package
    │   README.md
    │   setup.py
    │
    ├───my_package
    │       my_package.py
    │       __init__.py
    │
    └───tests
            tests.py

导入my_package时,我不得不使用

from my_package.my_package import my_class

o = my_class()

或者

import my_package

my_package.my_package.my_class()

我怎样才能只使用from my_package import my_class 将导入添加到__init__.py?我不能这样做,因为my package has dependency on pygdbmi

我正在使用设置工具。

非常感谢!!

import setuptools
import my_package

with open("README.md", "r") as fh:
    long_description = fh.read()

setuptools.setup(
    # Project information
    name=my_package.__title__,
    version=my_package.__version__,
    long_description_content_type="text/markdown",
    packages=setuptools.find_packages(),
    install_requires=["pygdbmi"],
    python_requires='>=3.7',
    # Tests
    test_suite='tests'
)

__init__.py:

__version__ = '0.0.1'
__title__ = 'my_package'

my_package.py

from pygdbmi.gdbcontroller import GdbController

class my_class:
    def __init__(self):
        print("my_class!!")
        self.gdbmi = GdbController()

tests.py:

import unittest

from my_package.my_package import my_class

class some_test(unittest.TestCase):
    def test_constructor(self):
        self.assertIsNotNone(my_class())

if __name__ == '__main__':
    unittest.main()

【问题讨论】:

  • 为什么不直接分发my_package.py,而不将其放入文件夹中?

标签: python setuptools python-packaging


【解决方案1】:

为了说明我的评论,

my_package.py:

from pygdbmi.gdbcontroller import GdbController

__version__ = '0.0.1'
__title__ = 'my_package'

class my_class:
    def __init__(self):
        print("my_class!!")

setup.py:

# ...

setuptools.setup(
    # Project information
    name=my_package.__title__,
    version=my_package.__version__,
    long_description_content_type="text/markdown",
    py_modules=['my_package'],  # replaces `packages=setuptools.find_packages(),`
    install_requires=["pygdbmi"],
    python_requires='>=3.7',
    # Tests
    test_suite='tests'
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-20
    • 2020-11-21
    • 2012-09-10
    • 2023-04-08
    相关资源
    最近更新 更多