我正在启动一个Python项目,并且我已经按照以下方式在包和子包中构建了我的代码:
FCM
|-- definitions
| |-- Classifiers
| |-- __init__.py
| `-- triggers
| |-- __init__.py
| |-- probability.py
|-- examples
| |-- __init__.py
| |-- compute
| `-- study
`-- source
|-- __init__.py
|-- FastComposedModels_pb2.py
|-- genetic_algorithm
`-- trigger_evaluator.py可以在子包之间导入模块,但是,当我尝试从内部导入triggers子包时。/examples或./source:
import definitions.triggers我得到了这个错误:
ModuleNotFoundError: No module named 'definitions.triggers'下面是sys.path变量值:
/apps/PYTHON/3.6.1/INTEL/lib/python3.6/site-packages
/home/projects/FCM
/apps/PYTHON/3.6.1/INTEL/lib/python36.zip
/apps/PYTHON/3.6.1/INTEL/lib/python3.6
/apps/PYTHON/3.6.1/INTEL/lib/python3.6/lib-dynload
/apps/PYTHON/3.6.1/INTEL/lib/python3.6/site-packages/pytz-2017.2-py3.6.egg
/apps/PYTHON/3.6.1/INTEL/lib/python3.6/site-packages/packaging-16.8-py3.6.egg
/apps/PYTHON/3.6.1/INTEL/lib/python3.6/site-packages/appdirs-1.4.3-py3.6.egg
/apps/PYTHON/3.6.1/INTEL/lib/python3.6/site-packages/cycler-0.10.0-py3.6.egg
/apps/PYTHON/3.6.1/INTEL/lib/python3.6/site-packages/nose-1.3.7-py3.6.e我在Linux中使用Python 3.6.1,然而,在其他平台和python版本中,这不会发生在我身上。我不明白为什么我找不到triggers子包。我错过了什么吗?
发布于 2020-06-09 01:49:18
在我的python版本中似乎已经有了一个“定义”模块。
下面是我遵循的步骤。首先,我导入了定义模块。然后我将加载的模块打印出来。最后,我意识到包/模块的路径与我的项目所在的位置不一致。
import definitions
import sys
print('\n'.join(sys.modules))它输出:
...
source.genetic_algorithm
definitions然后,您可以通过执行以下操作来获取模块的位置:
print(sys.modules['definitions'])发布于 2020-06-09 00:26:20
您正在尝试进行相对导入,这需要一个前导句点('.')性格。试一试
from .definitions.triggers import <function>更多细节请访问The Python Import System docs。
https://stackoverflow.com/questions/62266385
复制相似问题