从父目录导入模块以数字开头

时间:2017-06-27 16:35:12

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

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

文件的结构如下:

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

我想导入 123.py 文件,有没有办法实现这个目标?

3 个答案:

答案 0 :(得分:3)

没有。这不是一个有效的Python模块名称。从字母开始称之为别的东西。

答案 1 :(得分:1)

之前的答案是一个很好的建议,如果你命名一个模块/变量,你不应该用数字来启动它。但是如果你必须导入一个名为这样的模块,它仍然是可能的。

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

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

关于问题的其他部分,模块位于父目录中,您可以先将该目录附加到sys路径:

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

答案 2 :(得分:0)

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