在完全不同的目录中导入 python 模块

Posted

技术标签:

【中文标题】在完全不同的目录中导入 python 模块【英文标题】:Import python modules in a completely different directory 【发布时间】:2020-04-13 21:44:43 【问题描述】:

我正在编写一个自动使用其他脚本的脚本。我已将其设置为使用 importlib.import_modules() 自动从存储在名为 dependencies 的目录中的 .py 文件导入其他模块

最初,我将dependencies 作为我的应用程序根目录的子目录,这很好用。但是,我的目标是让dependencies 文件夹可能存储在用户想要的任何位置。在我的个人示例中,它位于我的保管箱文件夹中,而我的脚本完全从不同的目录运行。

我这辈子似乎无法再检测和导入模块,而且我没有想法。

有人对如何实现这一点有更好的想法吗?

这是路径结构的示例: E: |_ Scripts: | |_ Mokha.py | |_ Dropbox: | |_ Dependencies: | |_ utils.py

这是我的导入代码:(我正在读取 JSON 文件以获取依赖项名称并遍历列表中的每个项目)

def importPythonModules(pythonDependencies): chdir(baseConfig["dependencies-path]) for dependency in pythonDependencies: try: moduleImport = dependency module = importlib.import_module(moduleImport) modules[dependency] = module print("Loaded module: %s" % (dependency)) except ModuleNotFoundError as e: print(e) raise Exception("Error importing python dependecies.") chdir(application_path)

我得到的错误是No module named 'utils'

我已经尝试将 init.py 放在依赖项文件夹、我的 Dropbox 的根目录中,但都无济于事。

这一定是可能的,对吧?

【问题讨论】:

【参考方案1】:

更新:我解决了。

sys.path.append(baseConfig['dependencies-path'])

对解决方案不太超级满意,但它现在可以工作。

【讨论】:

以上是关于在完全不同的目录中导入 python 模块的主要内容,如果未能解决你的问题,请参考以下文章

如何从包内的两个不同文件夹中导入一个模块,该模块导入另一个模块

python导入不同目录下模块的方法

python - 在同一目录中导入模块[重复]

python 中导入redis模块

python-装饰器

在pycharm中导入自定义模块