gpt4 book ai didi

带有 entry_point 控制台脚本的 Python 包分发

转载 作者:行者123 更新时间:2023-12-03 21:13:37 27 4
gpt4 key购买 nike

我正准备部署一个具有以下布局的 Python 包:

MyPackage/
setup.py
MyPackage/
__init__.py
__main__.py
lib/
__init__.py
utils.py
db/
__init__.py
db1.py
db2.py
tasks/
__init__.py
something.py
setup.py包含:
setup(name = MyPackage,
...
packages = find_packages(),
include_package_data = True,
entry_points = {"console_scripts" : [
"do_something = MyPackage.__main__:main"
]})
__main__.py包含:
import tasks.something as something

something.my_function()
something模块包含:
import db.db1 as db1
import db.db2 as db2

def my_function():
db1.this_func(...)
db2.that_func(...)
db1包含:
import sqlalchemy
import lib.utils as utils

def this_func(...):
sqlalchemy.create_engine(...)

db2包含:
import sqlalchemy
import lib.utils as utils

def that_func(...):
sqlalchemy.create_engine(...)

从已安装的 site-packages 执行运行时目录, __main__.py完成没有问题。如果我执行 import MyPackage.tasks.something as something在交互式 session 中,该模块还带有问题导入。当我运行 console_scripts脚本 do_something ,但是,我收到 ModuleNotFound tasks 的错误.

是什么导致我的控制台脚本无法找到子包?

提前致谢!

最佳答案

按照以下示例更改您的导入:

__main__.py:

import tasks.something as something

# to:

import MyPackage.tasks.something as something

# or

from .tasks import something as something

关于带有 entry_point 控制台脚本的 Python 包分发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62050378/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com