gpt4 book ai didi

Python 包 - ImportError

转载 作者:行者123 更新时间:2023-12-03 08:23:40 26 4
gpt4 key购买 nike

我在这里遇到了一个特别棘手的问题。

我目前正在做一个个人项目,从一个相对简单的 Riot API 包装器开始,一切都运行良好,直到我想打包它并组织模块。这是该项目的链接:Logistic Analysis for LoL (我觉得这比试图描述文件夹的结构、文件中的内容等更容易。

我想要做的是创建一个测试套件,以确保在继续之前一切都按预期工作。起初我在主目录下有一个文件夹“tests”,但现在只使用tests.py;但我无法导入“pylol”(将是主包),也无法导入“lol_api_wrapper”(一个子包,包装 Riot API)。我有 初始化 .py 文件在每个目录中,所以我不确定为什么 Python 不能识别这些包。

起初我在想循环进口,但我没有看到任何?

谢谢大家....

错误输出:

Traceback (most recent call last):
File "/Users/mattmurray/Documents/GitHub/Logistic-Analysis-for-LoL/tests.py", line 1, in <module>
import pylol
File "/Users/mattmurray/Documents/GitHub/Logistic-Analysis-for-LoL/pylol/__init__.py", line 1, in <module>
from . import riot_api_wrapper
File "/Users/mattmurray/Documents/GitHub/Logistic-Analysis-for-LoL/pylol/riot_api_wrapper/__init__.py", line 1, in <module>
from utils import Session
ModuleNotFoundError: No module named 'utils'
[Finished in 0.1s with exit code 1]
[cmd: ['/anaconda/envs/py36/bin/python3', '-u', '/Users/mattmurray/Documents/GitHub/Logistic-Analysis-for-LoL/tests.py']]
[dir: /Users/mattmurray/Documents/GitHub/Logistic-Analysis-for-LoL]
[path: /anaconda/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin]

最佳答案

from utils import Session告诉 python 在模块路径中搜索 utils ,但它被埋在一个包裹里,不会被发现。 python 如何将它与另一个 utils.py 区分开来在别人的包裹里?

您在 pylol 使用包相对导入级别(from . import riot_api_wrapper)。在子包中继续这样做,例如,from .utils import Session .点告诉 python 查看当前包目录,riot_api_wrapper对于 utils .两个点会让 python 查看父级 pylol目录。

提取您的代码后,我更改了 pylol.__init__.py 中的第一个导入和 pylol.riot_api_wrapper.__init__.py相对进口。这是差异:

$ git diff origin/dev_1.0
diff --git a/pylol/__init__.py b/pylol/__init__.py
index 746a67d..d9d493f 100644
--- a/pylol/__init__.py
+++ b/pylol/__init__.py
@@ -1 +1 @@
-import riot_api_wrapper
\ No newline at end of file
+from . import riot_api_wrapper
diff --git a/pylol/riot_api_wrapper/__init__.py b/pylol/riot_api_wrapper/__init__.py
index f51bb86..f831152 100644
--- a/pylol/riot_api_wrapper/__init__.py
+++ b/pylol/riot_api_wrapper/__init__.py
@@ -1,4 +1,4 @@
-from utils import Session
+from .utils import Session

from champion import Champion

然后我从基本目录运行测试,它通过了前两个导入。它在我没有修复的下一次导入时失败。其中有很多,我很容易分心。

所以,为我工作!
td@mintyfresh ~/tmp/pkg/Logistic-Analysis-for-LoL $ python3 tests.py
Traceback (most recent call last):
File "tests.py", line 1, in <module>
import pylol
File "/home/td/tmp/pkg/Logistic-Analysis-for-LoL/pylol/__init__.py", line 1, in <module>
from . import riot_api_wrapper
File "/home/td/tmp/pkg/Logistic-Analysis-for-LoL/pylol/riot_api_wrapper/__init__.py", line 1, in <module>
from .utils import Session
File "/home/td/tmp/pkg/Logistic-Analysis-for-LoL/pylol/riot_api_wrapper/utils.py", line 1, in <module>
import constants as const
ImportError: No module named 'constants'

关于Python 包 - ImportError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49562375/

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