Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在模块中获取模块-Python_Python_Python Import_Python Module - Fatal编程技术网

在模块中获取模块-Python

在模块中获取模块-Python,python,python-import,python-module,Python,Python Import,Python Module,我有这样的结构: project/ sources/ __init__.py source_one.py source_teo.py main.py 然后在main.py中 import sources # Here I'd like to get a list with [source_one, source_two] 然后按平分制进口 有什么办法得到这个吗 编辑 我从目录(源代码)获得的信息: 如果我导入源代码,我会得到[

我有这样的结构:

project/
    sources/
        __init__.py
        source_one.py
        source_teo.py
    main.py
然后在
main.py中

import sources

# Here I'd like to get a list with [source_one, source_two]
然后按平分制进口

有什么办法得到这个吗

编辑 我从目录(源代码)
获得的信息:

如果我导入源代码,我会得到
[“\uuuu作者”、“\uu内置文件”、“\uu文档”、“\uu文件”、“\uu名称”、“\uu包”、“\uu路径”]


如果我从源代码导入*我会得到
[“\uuuu author\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

如果我从源代码导入源代码,我会得到
[“作者”,“内置”,“文档”,“文件”,“名称”,“包”,“路径”,“源代码”]


但是,我不知道
sources
包中的文件名,这只是一个例子。如何找到它们?

您应该相对于当前文件位置导入

例如:

  • from sources.source\u一个导入类sourceone

  • 从源导入*

    在示例2中,您只能通过_module.ClassName的名称_调用这些类

  • 也可以使用动态导入,如下所示:

    另外,我建议只导入您使用的类/模块,这就是我建议的原因

    from module import Class 
    
    而且不使用
    import*
    ,因此它也会导入所有模块依赖项(这是一种技巧;)但有效的方法是:

    import os
    fileslist = os.listdir("sources")
    for item in fileslist:
        if item.endswith("py") and item != "__init__.py":
            exec ("from sources.%s import *" %(item.split('.')[0]))
    

    从源代码导入*
    不起作用?使用
    *
    可能重复@raminietzsche我可以使用
    源代码和
    源代码。在这个例子中,我不知道
    sources
    中会有什么文件,因此,如果我不能按名称使用它们,我需要在列表中以友好的方式获取它们。
    dir(sources)
    应该告诉您其中有什么,并且
    source1=\u导入(“source1”,fromlist=(sources,))
    应执行以下操作rest@RaminNietzsche:除非
    sources
    投入额外的工作来支持它,否则这实际上不起作用。从包导入
    *
    不会自动加载其子模块。谢谢,但是我不知道
    sources
    中python文件的名称,这就是为什么它应该动态工作的原因。要使用
    source\u one
    中的类,只调用
    sources
    ->
    sources。Class\u in\u source\u one
    我需要添加
    from\u one导入Class\u in\u source\u one
    in
    \u init\u.py>。但是,再一次,我不知道
    sources