[英]what is the difference between ['[a,a,a]','[b,b,b]'] and [[a,a,a],[b,b,b]] in python?
[英]Difference between “python a/b.py” and “python -m a.b”
当我运行python a/b.py
,我得到:
Traceback (most recent call last):
File "a/b.py", line 10, in <module>
from . import config
ImportError: cannot import name 'config'
当我运行python -m ab
,没有任何错误。
两种方法之间的根本区别是什么?
根本的区别是运行命令时,哪个文件夹将添加到模块的搜索路径中 。 在第一种情况下,它是文件夹a
。 在第二种情况下,它的父文件夹a
。
您可以通过创建一个文件夹,证明机制为自己a
在控制台的工作目录和里面a
脚本b.py
包含以下代码:
import sys
print(sys.path)
该脚本只是将Python的模块搜索路径作为目录列表打印出来。
如果你运行python a/b.py
从包含目录a
,在第一项sys.path
名单将(绝对路径) a
。 这是因为您已明确指示Python运行该特定脚本b.py
,而该脚本恰好位于该目录中。 因此,该目录a
会首先添加到搜索路径中。
如果您运行python -m ab
,它会打印出(绝对路径) a
的父文件夹首先在列表中,即控制台的工作目录。 这是因为在这种情况下,您不会运行特定的脚本。 相反,你告诉Python查找一个名为模块b
在名为包a
。 在这种情况下,它首先在工作目录中查找此类软件包(然后在此处找到),然后在(默认)搜索路径中的其他位置查找。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.