当我导入一个子目录并为其分配一个变量名时,为什么为什么我无法通过该变量名从该子目录中导入模块?
例如,我的目录结构是:
root\
f1\
f2\
m1.py
当我执行以下操作时,一切都很好:
from f1.f2 import m1
但是当我执行以下操作时,python会将from选择解释为模块并抛出错误:
import f1.f2 as f
from f import m1
Error msg: ModuleNotFoundError: No module named 'f'
为什么f被解释为模块,而不是f1中包含的子目录f2?
答案 0 :(得分:1)
Python语法不允许Electronics->MobilePhone->Samsung->[galaxy, s10, s8]
Electronics->MobilePhone->Apple->[Iphone, Ipad, Ipod]
之后的表达式:
from
第二行中的 import f1.f2 as f
from f import m1
是一个变量表达式,Python语法(https://docs.python.org/3/reference/grammar.html)认为它已经找到了f
,然后将其馈送到导入机制中以查找一个名为NAME
的模块:
f
你可以做
Error msg: ModuleNotFoundError: No module named 'f'
相反...
答案 1 :(得分:0)
您需要在包中创建一个 init .py模块。 Python将此类文件夹识别为包。
在根文件夹,f1文件夹和f2文件夹中创建一个 init .py文件。
答案 2 :(得分:0)
每当您使用$Files = Get-ChildItem -LiteralPath $PSScriptRoot -Recurse | Where-Object {
$ext = $_.Extension
($PicExtensions | Where-Object {$_ -like $ext}) -or
($VideoExtensions | Where-Object {$_ -like $ext})
}
或from
时,Python都会使用您要传递的名称查找模块。您必须先从实际的模块名称导入,然后使用变量。
示例:
import