【问题标题】:How do I import internal packages using Python __init__.py file?如何使用 Python __init__.py 文件导入内部包?
【发布时间】:2020-06-30 04:31:50
【问题描述】:

我正在尝试测试 Python 模块。目前显示的文件结构如下:

project
├── __init__.py
├── __pycache__
│   └── __init__.cpython-37.pyc
├── p.py
├── package1
│   ├── __init__.py
│   ├── __pycache__
│   ├── module1.py
│   └── module2.py
└── package2
    ├── __init__.py
    ├── __pycache__
    └── module3.py

module3.py中,我想导入module2.py中定义的函数。我相信我只需要使用from package1.module2 import function_name。但是,这不起作用,错误是 ModuleNotFoundError: No module named 'package1'

顺便说一句,我正在使用 Python3.6 进行测试。

【问题讨论】:

标签: python-3.x


【解决方案1】:

您需要将目录路径添加到您的 sys.path 或 PYTHONPATH,以下代码可以工作。 在你的 module3.py 中,添加这个:

import os, sys
ab_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '../package1'))
sys.path.append(ab_path)

然后你可以在它之后做from module2 import function_name

【讨论】:

  • 谢谢!这基本上是我目前的解决方案。但是如果我不想打扰 sys 库怎么办?我认为official website中提供了这样的方法。问题是即使我有相同的文件结构,它也对我不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-21
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多