【问题标题】:Importing module from parent directory starting with a number从以数字开头的父目录导入模块
【发布时间】:2017-11-30 19:39:29
【问题描述】:

我目前有一个 Python 文件,需要在父目录中导入另一个 Python 文件。问题是我要导入的文件的名称以数字开头。

文件结构如下:

parent/
├── 123.py
└── child/
    └─── my_file.py

我要导入123.py文件,有没有办法实现呢?

【问题讨论】:

    标签: python python-3.x configuration python-import python-module


    【解决方案1】:

    Read more about naming conventions from PEP 8

    如上所述,将模块命名为数字并不可取,因为它会使事情变得比应有的复杂。 PEP 8 还建议命名为小写,使用下划线来增加可读性。 PEP 8 不是一套规则,而是指南。如果您绝对需要模块名称作为数字,您可以按照 Lgiro 的回答。

    另一种导入方式是使用__init__.py 文件和相对导入。

    parent/
    ├──__init__.py
    ├── parent.py
    └── child/
        ├───__init__.py
        └─── child.py
    

    然后在 child.py 中

    from .. import parent
    

    Question related to relative import

    【讨论】:

      【解决方案2】:

      前面的答案是一个很好的建议,如果您要命名模块/变量,则不应以数字开头。但是如果你必须导入一个这样命名的模块,它仍然是可能的。

      例如,从模块123.py访问变量x

      >>> from importlib import import_module
      >>> onetwothree = import_module('123')
      >>> onetwothree.x
      

      关于您问题的另一部分,模块位于父目录中,您可以先将该目录附加到您的系统路径:

      >>> import sys
      >>> sys.path.append('path/to/dir')
      

      【讨论】:

        【解决方案3】:

        没有。这不是一个有效的 Python 模块名称。以字母开头。

        【讨论】:

          猜你喜欢
          • 2021-11-22
          • 1970-01-01
          • 2015-07-23
          • 1970-01-01
          • 2019-11-10
          • 1970-01-01
          • 1970-01-01
          • 2019-05-31
          • 2019-04-07
          相关资源
          最近更新 更多