从子文件夹导入python

时间:2019-07-27 14:05:51

标签: python import

当我导入一个子目录并为其分配一个变量名时,为什么为什么我无法通过该变量名从该子目录中导入模块?

例如,我的目录结构是:

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?

3 个答案:

答案 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