gpt4 book ai didi

python - 导入后找不到模块

转载 作者:行者123 更新时间:2023-12-01 08:48:43 25 4
gpt4 key购买 nike

我运行的是 Python 3.6.3,并且我尝试通过 pip 安装的子目录中有以下模块。

/g_plotter
setup.py
/g_plotter
__init__.py
g_plotter.py
Gparser.py

设置.py

from setuptools import setup

setup(
name='g_plotter',
packages=['g_plotter'],
include_package_data=True,
install_requires=[
'flask',
],
)

我在容器中安装了 Docker 的模块:

RUN pip3 install ./g_plotter

然后在我的应用程序代码中:

import g_plotter

print(dir(g_plotter))

输出

 server_1  | ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']

所以使用这个导入来代替:

from  g_plotter import g_plotter

结果

server_1  | Traceback (most recent call last):
server_1 | File "./g_server.py", line 21, in <module>
server_1 | from g_plotter import g_plotter
server_1 | File "/usr/local/lib/python3.7/site-packages/g_plotter/g_plotter.py", line 7, in <module>
server_1 | import Gparser
server_1 | ModuleNotFoundError: No module named 'Gparser'

当我单独运行子模块(它是一个 Flask 应用程序)时,它可以工作。

最佳答案

在 python 3 中必须使用绝对导入,不再允许使用 import Gparser 。您可以将其更改为:

from . import Gparser
from g_plotter import Gparser

让你更清楚,我会描述它们的含义。

导入Gparser

Gparser = load_module()
sys.modules['Gparser'] = Gparser

从 g_plotter 导入 Gparser

Gparser = load_module()
sys.modules[Gparser_name] = Gparser

来自 .导入Gparser

package = find_package(__name__)  # 'g_plotter'
Gparser_name = package + 'Gparser' # g_plotter.Gparser
Gparser = load_module()
sys.modules[Gparser_name] = Gparser

现在你可以明白了,如果直接运行g_plotter,实际上__name____main__,所以python无法从中找到包。仅当您在其他模块中导入此子模块时, from 。导入一些东西可以工作。

关于python - 导入后找不到模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53218689/

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