使用importlib从其他文件夹导入脚本

2024-04-23 06:11:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含主脚本的项目文件。此外,我还有一个子目录,其中包含我想在不同时间导入的脚本。这就是这条路的样子。\\projectPath\\data\\scripts\\然后我有一个__init__.py文件和一个名为Snake.py的脚本,我正试图用importlib将Snake脚本导入我的主脚本。这就是我尝试过的:

class RunScript:
    gameBar = False
    Title = None
    script = None
    username = None
    display = None
    scriptFolder = None
    #importlib.import_module(name)

    def importScript(args):
        self = args[0]
        self.Title = args[1]
        orgiPath = os.path.abspath(os.path.dirname(sys.argv[0]))
        if args[2] == 'games':
            self.scriptFolder = str(orgiPath) + '\\data\\Game_%s' % self.Title
        else:
            self.scriptFolder = str(orgiPath) + '\\data\\Program_%s' % self.Title

        path = str(orgiPath) + '\\data\\scripts'
        os.chdir(path)
        print(os.listdir())
        self.script = importlib.import_module('Snake')

我在python shell中尝试了以下基本方法:

>>> import importlib, os
>>> path = 'C:\\Users\\26099\\Desktop\\DashProject\\data\\scripts'
>>> os.chdir(path)
>>> os.listdir()
['Snake.py', '__init__.py', '__pycache__']
>>> s = importlib.import_module('Snake')

通过pythonshell导入我的脚本可以很好地工作。问题是,当我运行RunScript类时,我无法导入模块,并且收到以下错误:ModuleNotFoundError: No module named 'Snake',即使它在显示目录中的所有内容时显示Snake脚本。我不知道为什么它在pythonshell中工作得很好,但是我在主程序中的代码不想导入该文件。我的主要程序是在scripts文件夹中查找与某种用户输入匹配的脚本。因此,如果用户键入一个脚本的名称,我希望能够导入它


Tags: pathpyimportself脚本nonedatatitle