导入自制包不重名
Import homemade package without duplicating name
我构建了一个通过 PyPI 分发的包。
上传、下载、安装和包本身都工作正常。我的问题是,为了 运行 我需要调用包名称两次,我想避免这种情况。
我希望它是这样的:
import package_name
package_name.do_stuff()
但它只能这样工作:
from package_name import module_name
module_name.do_stuff()
与其让 package_name
与 module_name
相同,或者有两个不同的名称,我只是一个。我想这是因为项目文件夹的结构方式,如下所示:
package_name/
|
- setup.py
- requirements.txt
- package_name/
|
- __init.py__
- module_name.py
- dist
- README etc
我想我想问的是如何构建我的项目文件夹,以便我以以下形式获得整洁的用法:
pip install package_name
import package_name
package_name.do_stuff()
提前致谢
这可以通过在 package_name/package_name/__init__.py
中导入 module_name
来执行。
鉴于您的确切结构,具有:
# package_name/package_name/module_name.py
class Foo:
pass
# package_name/package_name/__init__.py
from package_name.module_name import Foo
那么你应该可以执行
from package_name import Foo
来自例如package_name/test.py
.
你真的需要module_name.py
吗?只需将您的代码放入 __init__.py
即可从模块的“顶层”访问它。
我构建了一个通过 PyPI 分发的包。
上传、下载、安装和包本身都工作正常。我的问题是,为了 运行 我需要调用包名称两次,我想避免这种情况。
我希望它是这样的:
import package_name
package_name.do_stuff()
但它只能这样工作:
from package_name import module_name
module_name.do_stuff()
与其让 package_name
与 module_name
相同,或者有两个不同的名称,我只是一个。我想这是因为项目文件夹的结构方式,如下所示:
package_name/
|
- setup.py
- requirements.txt
- package_name/
|
- __init.py__
- module_name.py
- dist
- README etc
我想我想问的是如何构建我的项目文件夹,以便我以以下形式获得整洁的用法:
pip install package_name
import package_name
package_name.do_stuff()
提前致谢
这可以通过在 package_name/package_name/__init__.py
中导入 module_name
来执行。
鉴于您的确切结构,具有:
# package_name/package_name/module_name.py
class Foo:
pass
# package_name/package_name/__init__.py
from package_name.module_name import Foo
那么你应该可以执行
from package_name import Foo
来自例如package_name/test.py
.
你真的需要module_name.py
吗?只需将您的代码放入 __init__.py
即可从模块的“顶层”访问它。