从编号开头的目录中的Python3导入文件

时间:2018-09-16 15:16:49

标签: python python-3.x import

我尝试了this question中的答案,但无济于事,所以我认为值得单独提出一个问题。目录布局如下:

aale/
     2/
       2.py
       __init__.py
     3/
       3.py
       __init__.py
     __init__.py

很遗憾,名称无法更改(这是为硬件问题提供给我们的布局)。我正在尝试从2导入3,但似乎不起作用。我尝试将importlib用作:

two = importlib.import_module('2.2')以及 two = importlib.import_module('2')

也不起作用(产生了ModuleNotFoundError: No module named '2'错误)。任何帮助/其他方法将不胜感激。我正在使用Python 3.6。

3 个答案:

答案 0 :(得分:1)

假设您的脚本位于aale目录中,则需要执行以下导入操作:

two = importlib.import_module('aale.2.2')

答案 1 :(得分:0)

您可以使用__import__,即:

two  = __import__("2.2") # or __import__("aale.2.2") 
three = __import__("3.3") # or __import__("aale.3.3")

等同于:

import 2.2 as two  
import 3.3 as three

这是不可能的。


注释:

  1. 根据PEP 8 styling guide
      

    软件包模块名称应具有全小写的简短名称。可以在模块名称中使用下划线   如果改善   可读性。

  2. 我已经使用与您的文件夹结构相同的文件夹结构测试了导入 问题,没有显示错误。

参考:

  1. https://stackoverflow.com/a/16644280/797495
  2. In python, how to import filename starts with a number
  3. PEP 8 -- Style Guide for Python Code

答案 2 :(得分:0)

您可以使用pathlib

这是基本的:

from pathlib import Path


BASE_LOCATION = Path(__file__).parent

(您可以添加.parent进入上方的文件夹,依此类推。)

修改

如果这对您没有帮助,则可以尝试import weirdimport

您可以了解有关此here的更多信息。

希望这会有所帮助!