在完全不同的目录中导入 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 模块的主要内容,如果未能解决你的问题,请参考以下文章