加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python导入文件夹里面的模块

发布时间:2020-12-16 21:37:19 所属栏目:Python 来源:网络整理
导读:想要学习使用文件夹导入模块的正确方法 /garden __init__.py utilities.py someTools.py /plants __init__.py carrot.py corn.py 在/plants/__init__.py里面我有 __all__ = ['carrot','corn']from . import * 在carrot.py里面 def info(): print "I'm in car
想要学习使用文件夹导入模块的正确方法
/garden
    __init__.py
    utilities.py
    someTools.py
    /plants
        __init__.py
        carrot.py
        corn.py

在/plants/__init__.py里面我有

__all__ = ['carrot','corn']
from . import *

在carrot.py里面

def info():
    print "I'm in carrot.py"

当我做

import garden
garden.carrot.info()
# got correct result
I'm in carrot.py

我的问题是如何纠正utilities.py的名称空间,例如在carrot.py和corn.py中.我想在utilities.py中使用函数

在我内心的胡萝卜.py

import utilities as util

# try use it and got global name error
util.someFunc()
# NameError: global name 'util' is not defined #

我可以在plants文件夹中配置__init__.py,以便导入花园内的所有模块吗?像公用事业和一些工具?所以我不必在carrot.py和corn.py中导入实用程序并且能够使用实用程序?

解决方法

注意:所有__init__.py文件都是空的.
main.py
app/ ->
    __init__.py
    package_a/ ->
       __init__.py
       fun_a.py
    package_b/ ->
       __init__.py
       fun_b.py

应用程序/ package_a / fun_a.py

def print_a():
    print 'This is a function in dir package_a'

应用程序/ package_b / fun_b.py

from app.package_a.fun_a import print_a
def print_b():
    print 'This is a function in dir package_b'
    print 'going to call a function in dir package_a'
    print '-'*30
    print_a()

main.py

from app.package_b import fun_b
fun_b.print_b()

如果你运行$python main.py它会返回:

This is a function in dir package_b
going to call a function in dir package_a
------------------------------
This is a function in dir package_a

> main.py:从app.package_b导入fun_b
> fun_b.py来自app.package_a.fun_a import print_a

如果你的PYTHONPATH中有app,那么你可以从任何地方>>>来自app.package _…

所以文件夹package_b中的文件使用了文件夹package_a中的文件,这就是你想要的.对??

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读