我在这里遇到了一个特别棘手的问题。
我目前正在做一个个人项目,从Riot的一个相对简单的包装开始,直到我想打包它并组织模块,所有这些都很好地工作。下面是指向该项目的链接:LoL的Logistic分析 (我觉得这比试图描述文件夹的结构、文件中的内容等要容易得多。
我想要做的是创建一个测试套件,以确保在继续之前一切都能正常工作。起初,我在主目录下有一个文件夹‘test’,但现在我只使用tests.py;但是我不能导入'pylol‘(将是主包),也不能导入'lol_api_wrapper’(一个子包,包装Riot )。我在每个目录中都有init.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]发布于 2018-03-29 18:56:58
from utils import Session告诉python在模块路径中搜索utils,但是它隐藏在一个包中,不会被找到。python将如何将它与他人包中的另一个utils.py区分开来?
您正在使用pylol级别的包相对导入(from . import riot_api_wrapper)。继续在子包中这样做,例如,from .utils import Session。这个点告诉python查看当前包目录riot_api_wrapper for 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'https://stackoverflow.com/questions/49562375
复制相似问题