python从两个目录文件中导入一个

标签 python import

例如:

 Files/ 
    main.py
    SubFileA/
        __init__.py              "from util1 import help"
        util1.py                 "def help(): print ...A..."
    SubFileB/
        __init__.py              "from util1 import help"
        util1.py                 "def help(): print ...B..."

SubFileA和SubFileB中的util1.py内容不同。

我希望用户可以通过某种方式指定要导入的 util1.py。

我期待这样的事情:

  if subFileA:
       from SubFileA import *
  else:
       from SubFileB import *

util1.py 具有相同的 API,但实现不同。

我这样做的原因是,如果我将两个 util1.py 组合在一起,代码将变得丑陋且难以维护。希望任何人都可以给我一个解决方案,或者任何建议都会很棒!

我尝试了这些代码,但收到了警告(它确实有效,但警告令人尴尬):

main.py:4: SyntaxWarning: import * only allowed at module level
   def main():
main.py:4: SyntaxWarning: import * only allowed at module level
   def main():

大家。我想我找到了解决方案。但我认为这不是好的编程风格。

Files/
   main.py                              "from directory import *"
   directory/
       __init__.py                      
                                        "user=raw_input() 
                                        if user: 
                                              from directoryA import *
                                        else
                                              from directoryB import * "
       directoryA/
           __init__.py                   "from util1 import help1()"
           util1.py 
       directoryB/
           __init__.py                   "from util1 import help1()"
           util1.py 

确实,这看起来很奇怪。但它完成了工作。

最佳答案

您需要将每个目录打包为 from <package> import ...工作的语法。要告诉 Python 一个目录是一个包,只需创建一个空的 __init__.py每个目录中的文件。

如果您希望根据 util1 的版本执行特定行为是导入的,你可以在每个 __init__.py 中编写初始化代码文件。

有关更多信息,请查看 official documentation on packages .


最终,您的新项目目录树应如下所示:

Files/ 
    main.py
    SubFileA/
        __init__.py
        util1.py
    SubFileB/
        __init__.py
        util1.py

关于python从两个目录文件中导入一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10725356/

相关文章:

python - 从 URL 安装 conda 包

python C扩展: multithreading and random numbers

java - 在 Java 中导入自定义类,使用命令行

python - web2py 中使用 import 进行函数调用

Django 导入导出按钮不会出现在管理屏幕中

python - Pandas DataFrame.add() -- 忽略缺失的列

python - 如何使用 Type 使 pydantic Field 接受子类?

import - 如何导入和导出 JBPM 6.5 存储库

php - 导出和导入 ARC2 RDF 数据的最佳方式是什么?

python - Django:根据用户显示不同的内容