3

文件设置:

...\Project_Folder
...\Project_Folder\Project.py
...\Project_folder\Script\TestScript.py

我正在尝试根据用户输入从文件夹 Script 中导入 Project.py 模块。

Python版本:3.4.2

理想情况下,脚本看起来像

q = str(input("Input: "))
from Script import q 

但是,python 在使用 import 时不会将 q 识别为变量。

我试过使用importlib,但是我不知道如何从上面提到的Script文件夹中导入。

import importlib
q = str(input("Input: "))
module = importlib.import_module(q, package=None)

我不确定我会在哪里实现文件路径。

4

2 回答 2

0

重复我最初发布在How to import a module given the full path? 因为这是一个 Python 3.4 特定的问题:

Python 3.4 的这个领域似乎理解起来极其曲折,主要是因为文档没有给出很好的例子!这是我使用非弃用模块的尝试。它将根据 .py 文件的路径导入一个模块。我正在使用它在运行时加载“插件”。

def import_module_from_file(full_path_to_module):
    """
    Import a module given the full path/filename of the .py file

    Python 3.4

    """

    module = None

    try:

        # Get module name and path from full path
        module_dir, module_file = os.path.split(full_path_to_module)
        module_name, module_ext = os.path.splitext(module_file)

        # Get module "spec" from filename
        spec = importlib.util.spec_from_file_location(module_name,full_path_to_module)

        module = spec.loader.load_module()

    except Exception as ec:
        # Simple error printing
        # Insert "sophisticated" stuff here
        print(ec)

    finally:
        return module

# load module dynamically
path = "<enter your path here>"
module = import_module_from_file(path)

# Now use the module
# e.g. module.myFunction()
于 2015-04-12T13:25:49.643 回答
0

为此,我将整个导入行定义为字符串,使用 q 格式化字符串,然后使用 exec 命令:

    imp = 'from Script import %s' %q
    exec imp
于 2016-08-23T20:09:31.593 回答