【问题标题】:Python import error- No Module named errorPython 导入错误 - 没有模块命名错误
【发布时间】:2020-09-14 19:13:24
【问题描述】:

我正在尝试将一个 python 文件导入另一个文件。我有以下目录结构-

/a/program.py
/b/python_package/test.py
/b/python_package/__init__.py

程序。 py-

import sys
sys.path.append('/b/python_package')
import test

也试过了

from python_package import test

Test.py-

print('imported package')

我没有收到名为测试错误的模块。

ImportError: No module named test in <script> at line number 5

Traceback (most recent call last):
  File "<script>", line 7, in <module>
ImportError: No module named test
None

我做错了什么?

【问题讨论】:

  • 请发布完整的错误信息
  • (1) 你混合了“python_package”和“python_packages”。 (2) 对于第二个变体,附加路径无论如何都只能是“/b”。
  • @wjandrea 这是完整的消息
  • @MichaelButscher 已更正但仍然出现错误
  • @user2828360 完整的消息是什么?

标签: python python-3.x


【解决方案1】:

__init__.py 在 python 2 中将 dir 签名为 python 包,在 python 3 中不需要。

您应该查看this post

a、b 是完全不同的路径吗? 你可以有这样的东西:

root/
  program.py
  package/
    b.py

然后你可以在程序中导入b模块,如:

from package import b

【讨论】:

  • 目录的结构应该是不同的路径而已
【解决方案2】:

你必须做一个绝对导入并且 sys.insert 方法有效

import sys
sys.path.insert(0,'/abs_path/b/python_package')
import test

这实际上是一个肮脏的把戏,正确的做法是创建一个包并从父级导入它的子级。注意它不是 init.py 它是___init___.py

【讨论】:

  • 1.我只添加了绝对路径。它只指定 like /b 来简化。插入时也会出现同样的错误吗?也只有它的“init.py”
  • 是的,我可以看到init现在已经被编辑了,你的文件夹b在根目录吗?即/b
猜你喜欢
  • 1970-01-01
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
  • 2015-05-07
  • 2015-02-09
  • 2016-07-11
  • 2013-03-24
  • 1970-01-01
相关资源
最近更新 更多