Python3导入错误

Python3导入错误,python,python-3.x,importerror,Python,Python 3.x,Importerror,我一直混淆了Python3和Python2在导入方面的区别 如果我有这样一个目录 module_test/ -> a/hello.py lib/mad.py 我想从lib/mad.py导入hello模块 import a.hello 所以我写了这样的代码 lib/mad.py import a.hello 我把pythonlib/mad.py称为python,但它发生了 我不知道为什么会这样 你知道吗?我想解决这个问题 示例存储库是##提前谢谢 您的问题是,通过从module

我一直混淆了Python3和Python2在导入方面的区别

如果我有这样一个目录

module_test/ ->
  a/hello.py
  lib/mad.py
我想从lib/mad.py导入hello模块

import a.hello
所以我写了这样的代码

lib/mad.py

import a.hello
我把pythonlib/mad.py称为python,但它发生了

我不知道为什么会这样

你知道吗?我想解决这个问题


示例存储库是##提前谢谢

您的问题是,通过从
module\u test
目录运行
mad.py
,您猜测Python将使用当前目录作为查找模块
b
的基础。要证明它不起作用,请执行以下操作:

> python lib/mad.py
  • 编辑
    mad.py
    脚本,并将以下内容添加到脚本中:

    import sys
    print(sys.path)
    exit()
    
    这将只打印Python用于查找您尝试导入然后退出的模块的搜索路径

  • 打开终端,转到文件夹
    /module\u test
    ,然后运行以下操作:

    > python lib/mad.py
    
    现在您应该看到转储到终端的路径。请注意,列表中的第一个条目是文件夹“module_test/lib”,而不是您认为的“module_test”

  • 那么,你如何解决这个问题呢

    简单:您只需告诉Python它应该使用的正确目录来查找您的模块。为此,必须设置PYTHONPATH环境变量:

    > export PYTHONPATH=$PYTHONPATH:/path/to/module_test
    
    现在,如果您尝试运行脚本,它应该按预期导入
    a.hello


    PS:您应该阅读官方Python教程,特别是第6章,其中解释了模块和包的概念:


    这会让你基本了解情况并帮助你解决问题。

    看起来
    a
    目录可能不在你的Pythonpath上。发布您的确切stacktrace,否则您将无法获得更多有用的帮助。