【问题标题】:Better way to import module from subdirectories at the same level从同级子目录导入模块的更好方法
【发布时间】:2018-04-10 11:22:40
【问题描述】:

我有以下项目结构 main - exp1 - mod1.py - exp2 - mod2.py

我可以使用以下命令从 mod1.py 中的 mod2.py 导入模块 abc

from ..exp2.mod2 import abc

有没有其他方法可以在我不必使用.. 的情况下导入这些模块?

【问题讨论】:

    标签: python python-2.7


    【解决方案1】:

    您始终可以使用绝对模块名称导入

    from main.exp2.mod2 import abc  
    # or 
    # from exp2.mod2 import abc
    # (?)
    

    对我来说这是首选方式。

    这种方式和你的方式是唯一可用的选择......

    【讨论】:

    • sys.path 中也手动添加了目录(但这很难看)。
    • @Jean-FrançoisFabre 是的,应该添加“除了更改 PYTHONPATH”或类似的东西......
    【解决方案2】:

    除非您更改项目结构,否则不确定是否有比使用'..' 更简单的方法:

    # mod1.py
        import sys
        sys.path.append('..')
        from exp2.mod2 import abc
    

    【讨论】:

      【解决方案3】:

      您应该始终设置一个 PYTHONPATH,然后从该路径作为主路径导入。

      在您的情况下,您应该执行以下操作,

      export PYTHONPATH=main   (Full path of main dir in shell )
      from exp2.mod2 import abc
      

      如果你这样做......这不是一个正确的方法,你在传输代码或部署期间也会遇到一些问题

      【讨论】:

        猜你喜欢
        • 2015-12-23
        • 2022-07-22
        • 2019-06-19
        • 1970-01-01
        • 1970-01-01
        • 2019-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多