[英]Python Custom package import module name not importing on init
I'm creating a custom package with the following structure:我正在创建一个具有以下结构的自定义包:
test_package
│ README.md
│ setup.py
│
├───my_package
│ my_package.py
│ __init__.py
│
└───tests
tests.py
When importing my_package
, I have to use导入
my_package
,我必须使用
from my_package.my_package import my_class
o = my_class()
Or或者
import my_package
my_package.my_package.my_class()
How can I use just from my_package import my_class
WITHOUT adding imports to __init__.py
?如何仅使用
from my_package import my_class
而不向__init__.py
添加导入? I can't do that because my package has dependency on pygdbmi .我不能这样做,因为我的包依赖于 pygdbmi 。
I'm using setuptools.我正在使用设置工具。
Many thanks!!非常感谢!!
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
: __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
: 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()
To illustrate my comment,为了说明我的评论,
my_package.py
: 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
: 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'
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.