难以理解奇怪的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
。无法导入
。