使用Python导入复杂模块
你好
pythonistas,
我有一个扩展的文件夹和python脚本子文件夹的层次结构. 我实施的第一个“游击队”方式,它的工作原理如下: import sys import platform if platform.system() == 'Linux': python_path = '/var/lib/jenkins/jobs/QA/workspace/Site' else: python_path = 'C:/Python27/projects/QA/Site' #ACADEMIES sys.path.insert(1,python_path + '/Academies/Tests') sys.path.insert(2,python_path + '/Academies/Suites') sys.path.insert(3,python_path + '/Academies/inc') sys.path.insert(35,python_path + '/Academies/Academy_wall') 2.在我执行导入的每个文件中,如下所示: 正如你所看到的,PyCharm抱怨进口;但是当我运行它时,它的工作原理. 有没有可能有一个paths.py文件导入那里的所有不同的包,所有其他脚本只能调用导入路径,然后从那里只导入我需要的不同文件,就像我现在做的那样? 提前致谢! 解决方法
好吧,因为这些文件夹中的所有模块似乎都相互依赖,所以我建议将这整个文件夹组成一个巨大的包,如下所示:
base | +--Academies | +- __init__.py +- FolderA | +- __init__.py | +- moduleA.py | +- moduleB.py +- FolderB | +- __init__.py | +- moduleA.py | +- moduleB.py 在每个模块中,请参考其他模块,如下所示: # File: Academies/FolderA/moduleA.py from Academies.FolderB import moduleA,moduleB from . import moduleB as local_b # moduleB is a naming conflict in this example so we rename it to local_b for the scope of this file. 使用此方案,您仍然可以相对轻松地从任何其他模块引用模块. 如果您需要将模块作为__main__运行,则必须修改调用它们的方式. 使用Academies(在此示例中为基础)上面的文件夹作为工作目录,您将要像在这样调用folderB中的moduleA: C:pathtobase>python -m Academies.FolderB.moduleA (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |