Python 简化我的包从package_name.module_name到package.name的导入

Python 简化我的包从package_name.module_name到package.name的导入,python,Python,经过大量的尝试和错误,我开发了我的第一个python包,并将其上传到PyPI测试。然后,我可以安装它并按预期将其导入Spyder。但是,为了使用它,我需要以如下格式使用包名和模块名调用它: from package_name.module_name import function_name 因此,如果我的包名是do_something,那么模块名也是do_something,函数名是do_it_now。因此,要获得do_it_now,这是我希望在Spyder中打包以供访问的函数,我需要执行以下

经过大量的尝试和错误,我开发了我的第一个python包,并将其上传到PyPI测试。然后,我可以安装它并按预期将其导入Spyder。但是,为了使用它,我需要以如下格式使用包名和模块名调用它:

from package_name.module_name import function_name
因此,如果我的包名是do_something,那么模块名也是do_something,函数名是do_it_now。因此,要获得do_it_now,这是我希望在Spyder中打包以供访问的函数,我需要执行以下操作:

from do_something.do_something import do_it_now
我的问题是,我是否可以简化此操作,以便用户只需使用以下命令:

from do_something import do_it_now
查看我的文件结构,我确实意识到包名为do_something,包内的另一个文件夹名为do_something,我的.py文件也名为do_something。我怀疑我的文件结构中的这些层可能是原因,但当我试图删除包中的do_something文件夹并将do_something.py和uuu init_uuuu.py文件移动到主结构时,我无法让包上载或随后正确安装

以下是我的软件包结构的支出:

包结构


任何想法都将不胜感激

你为什么不做点什么呢。试试这个:

   import do_something

根据你的结构应该是这样的

/do_something
  /do_something
    __init__.py
    do_it_now.py
  setup.py
  LICENSE
  README.md
在代码中,您只需导入

import do_something

从do_something导入do_it_now将尝试从包do_something导入模块do_it_now。这将失败,因为没有这样的模块。如果您试图减少用户在import语句中使用的.s的数量,则可以尝试以下操作:

from do_something.do_something import do_it_now
将从do\u something导入do\u something添加到\uuu init\uuuuuuu.py


然后,用户可以使用import do_something并以do_something.do_something.do_it_now的形式访问函数,或者使用from do_something import*并通过do_something.do_it_now访问函数。

是的,您的结构正确。我看到的是我用来上传到PyPI测试的包文件,而不是安装pip后下载的文件。但是,这仍然需要我从package_name.module_name导入立即执行。感谢您的回复。您是对的,我试图减少.s的数量,或者基本上简化实现实际功能所需的命令。我的目的是只有一个或两个函数,但能够通过PyPI进行分发,因此在研究之后,听起来包是最好的方法。从你提到的,我有一个正确的结构,也许没有机会代替做一个从包导入功能。再次感谢您的帮助。实际上,Python没有提供这种语法,因为它是不明确的。假设您有一个包含两个子模块的包,每个子模块都有一个名为do_it_now的函数,那么从包导入do_it_now没有指定应该使用两个可用的do_it_now函数中的哪一个。
from do_something import do_it_now