首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Packages ImportError

Packages ImportError
EN

Stack Overflow用户
提问于 2018-03-29 17:54:45
回答 1查看 285关注 0票数 0

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

我目前正在做一个个人项目,从Riot的一个相对简单的包装开始,直到我想打包它并组织模块,所有这些都很好地工作。下面是指向该项目的链接:LoL的Logistic分析 (我觉得这比试图描述文件夹的结构、文件中的内容等要容易得多。

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

一开始我是在考虑循环进口,但我没有看到任何?

谢谢大家..。

错误输出:

代码语言:javascript
复制
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]
EN

回答 1

Stack Overflow用户

发布于 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__.pypylol.riot_api_wrapper.__init__.py中的第一个导入更改为相对导入。这是区别:

代码语言:javascript
复制
$ 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

然后我从基目录运行测试,它通过了前两个导入。下一个导入失败了,但我没有修复。有相当多的这些,我很容易分心。

所以,为我工作过!

代码语言:javascript
复制
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'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49562375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档