python导入错误来自设置.py如果未安装依赖项

2024-10-03 00:30:20 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的一个python包中,setup.py导入了位于包内的模块__about__.py(其中存储了所有元数据,并希望在pakcage和setup之间共享它)。你知道吗

setup.py同时为我的包安装其他相关的第三方库。你知道吗

模块__init__.py中的包内还导入了其他模块,如(from mypackage.mymodule import MyClass),以保持简单的用法(因为编写import mypackagea = mypackage.MyClass()更容易)。你知道吗

问题是如果setup.py导入__about__.py,那么也会从包和所有更深层的内容执行__init__.py,这会在安装过程中生成导入错误,因为仍然没有安装我的依赖库。你知道吗

结构为:

setup.py
mypackage/
    __init__.py
    __about__.py
    mymodule.py

我想保持相同的用法和结构,但解决了安装过程中的导入问题,如果依赖模块之前没有安装。最好的方法可能是导入mypackage.__about__,而不执行__init__.py,但是如何导入呢?你知道吗

或任何其他建议是受欢迎的。你知道吗

这个包只有python3。你知道吗


Tags: 模块数据frompyimport用法init过程
1条回答
网友
1楼 · 发布于 2024-10-03 00:30:20

实际上,我通过用exec替换setup.py中的import mypackage.__about__找到了解决方法:

_ABOUT = {}
exec(open('mypackage/__about__.py').read(), _ABOUT)

setuptools.setup(
    name=_ABOUT['NAME'],
    version=_ABOUT['VERSION'],
    ...

文件__about__.py包含:

NAME = 'mypackage'
VERSION = 'v1.0.0'
...

这个解决办法很有效。只有一个小问题是政治公众人物警告W0122

相关问题 更多 >