Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
难以理解奇怪的Python导入_Python - Fatal编程技术网

难以理解奇怪的Python导入

难以理解奇怪的Python导入,python,Python,我做了这个小测验: test\ config.py run.py movie\ __init__.py ironman.py impossible.py 我从test文件夹运行run.py run.py: import movie.ironman import impossible #okay import config #okay 铁人.py: import movie.ironman import imp

我做了这个小测验:

test\
    config.py
    run.py
    movie\
        __init__.py
        ironman.py
        impossible.py
我从
test
文件夹运行
run.py

run.py

import movie.ironman
import impossible #okay
import config     #okay
铁人.py

import movie.ironman
import impossible #okay
import config     #okay
疯狂的是,这两种进口商品都很好。假设我的路径是相对于
test
文件夹的。我可以理解
config.py
是如何导入的,但是
不可能.py
是如何导入的?不应该是电影《不可能》吗


我真的很烦,python中的导入系统让我有点困惑。如果有人能帮助我,那就太好了。提前谢谢你

直到Python 2.5,相对导入和绝对导入之间没有真正的区别。在您的示例中,相对导入是相对于当前模块的。 在较新的python版本中,您可以/必须导入具有前导
的相关模块:

import config
from .impossible import something

此处
不可能
是相对于电影目录的模块。而
config
对于搜索路径是绝对的,搜索路径还包含调用程序
run.py

的目录,您使用的是哪个版本的Python?导入的行为在Python 2和Python 3之间发生了变化。@Blckknght:我想象Python 2。我在2.7上测试了它,它运行正常(所有导入都成功)。是这样吗?嗯,以
领先很酷。在我的示例中,如果导入是相对于我的
电影
文件夹的,那么
导入不可能
是有意义的,但是
导入配置
则没有意义,因为配置是一个级别提升。对吗?如果脚本以“from\uuuuu future\uuuuuu import absolute\u import”开头,那么代码的行为方式是Python 3,而不是使用。我会给你一个例外。推荐,谢谢大家!东西终于有意义了XD猜测从Python2到Python3的变化不会太糟糕注意,您可以使用
本身来指示当前包。因此,
ironman.py
可以使用
从导入
不可能的.py
。无法导入