文件设置:
...\Project_Folder ...\Project_Folder\Project.py ...\Project_folder\Script\TestScript.py
我正在尝试根据用户输入从文件夹脚本中导入Project.py导入模块。
Python版本:3.4.2
理想情况下,脚本看起来像
q = str(input("Input: "))
from Script import q
但是,使用import时,python不会将q识别为变量。
我尝试使用 importlib ,但我无法弄清楚如何从上面提到的脚本文件夹导入。
import importlib
q = str(input("Input: "))
module = importlib.import_module(q, package=None)
我不确定在哪里实现文件路径。
答案 0 :(得分: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()
答案 1 :(得分:0)
我通过将整个导入行定义为字符串,使用q格式化字符串然后使用exec命令来完成此操作:
imp = 'from Script import %s' %q
exec imp