gpt4 book ai didi

即使 __init__.py 存在,python 导入也会失败

转载 作者:行者123 更新时间:2023-12-01 05:50:26 27 4
gpt4 key购买 nike

假设我有这个目录结构

package /
__init__.py
cpackage.py

subpackage1/
__init__.py
subpack1_call.py

/lib
__init__.py
sub_lib.py
subpackage2/
__init__.py
subpack2_call.py

我想在 subpackage1 和 subpackage2 中导入 cpackage,但我无法导入我收到 valuename 错误和模块未找到错误

我可以在 subpackage1 中轻松地做到这一点

from lib.sub_lib import hello_pr

hello_pr()

这里没有错误,hello_pr 打印我在 sub_lib 中定义的内容但我无法向上移动目录,如上面的情况我可以轻松移动顺着目录结构

我错过了什么。我已经在这个网站和 pydoc 中研究了很多解决方案,也许我错过了一些东西,因为似乎没有任何东西可以工作

最佳答案

如果你可以导入lib.sub_lib,则意味着你的PYTHONPATH指向subpackage1。它应该指向包含包的目录,然后你就可以导入package.cpackage、package.subpackage1.lib.sub_lib等。

你也可以将你的PYTHONPATH指向cpackage,然后删除这个目录中的init.py,因为它没有用,你可以导入cpackage、subpackage1.lib.sub_lib等。

基本规则是:如果 PYTHONPATH=dir,则

dir\
bob.py
sub\
__init__.py
bib.py
inner\
__init__.py
bub.py

import bob
import sub (will import sub\__init__.py)
import sub.bib (will import sub\__init__.py then bib.py)
import sub.inner (will import sub\__init__.py then sub\inner\__init__.py)
import sub.inner.bub (will import sub\__init__.py then sub\inner\__init__.py
and finally bub.py)

关于即使 __init__.py 存在,python 导入也会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14517044/

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