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 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 如果你的PYTHONPATH中有app,那么你可以从任何地方>>>来自app.package _… 所以文件夹package_b中的文件使用了文件夹package_a中的文件,这就是你想要的.对?? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |