首页 > 解决方案 > 如何从多个级别导入 python 文件?

问题描述

我的文件结构如下:

在此处输入图像描述

deepxi/lib/dev/acoustic/feat/polar.py,我想导入deepxi/lib/dev/acoustic/analysis_synthesis/polar.py,我设法做到了:

import sys
sys.path.insert(0, '../..')

from ..analysis_synthesis import polar

但我也想包括deepxi/lib/dev/add_noise.py. 我试过from add_noise import add_noise_batch了,但没有用。有任何想法吗?

我没有能力做export PYTHONPATH=...

标签: python

解决方案


如果您将项目的根目录添加为export PYTHONPATH='/path/to/deepxi'

然后打电话给polar你会做

from lib.dev.acoustic.analysis_synthesis import polar

打电话给add_noise_batch

from lib.dev import add_noise_batch

或者

export PYTHONPATH='/path/to/deepxi/lib'

并做:

from dev.acoustic.analysis_synthesis import polar

from dev import add_noise_batch

像这样你可以添加更多到你的PYTHONPATH,但最好的做法是添加根文件夹(第一种方法),然后使用绝对路径到你所调用的任何内容。

此外,重命名,lib因为这也是 Python 中的一个常见模块。总是给东西命名,这样它就不会与已经存在的模块重合。所以analysis_synth_lib或不是的东西lib

笔记

您可以将多个路径添加到您的PYTHONPATH,不建议,但您可以这样做!例如export PYTHONPATH='/path/to/deepxi:/path/to/deepxi/lib'

现在,每当您运行该功能时,它都会耗尽您的所有路径PYTHONPATH以找到它正在寻找的东西!


推荐阅读