【问题标题】:How to import a module but ignoring the package's __init__.py?如何导入模块但忽略包的 __init__.py?
【发布时间】:2012-11-25 16:25:31
【问题描述】:

我正在尝试导入一个位于 Python 包内的模块中的函数,但是当我尝试时:

from package.module import some_function

Python 执行包的 _init_.py 但它不会发生。

有没有办法导入告诉 Python 忽略包的 _init_.py 的函数?

【问题讨论】:

  • 为什么要忽略__init__.py
  • 我不完全确定您所说的“但它不可能发生”是什么意思。但简短的回答是否定的,你不能告诉 python 忽略该文件。您可能还可以使用sys.path 玩其他技巧来使其正常工作,但它们充其量只是黑客。也许你可以重组事情,让你__init__.py 是空的?或者至少不会引起任何不良副作用?

标签: python import python-packaging


【解决方案1】:

答案是否定的,你不能在没有执行 __init__.py 的情况下导入 python 包。根据定义,要制作一个包,您必须在该目录中放入一个 __init__.py。

但是,您可以创建一个空的 __init__.py 文件。

如果你只想从模块中导入一个函数,你可以使用:

import sys
sys.path.append('path_to_package/')

from module import some_function

请注意,这是一个肮脏的解决方案,并不总是有效。

【讨论】:

  • 你说这是一个肮脏的解决方案,但是如果你想从一个模块中只公开一个特定的函数而模块中定义了多个函数,那么最好的做法是什么?
猜你喜欢
  • 2013-07-29
  • 2013-04-21
  • 2016-06-14
  • 2018-10-27
  • 1970-01-01
  • 2015-07-30
  • 2012-01-15
  • 2021-11-08
  • 1970-01-01
相关资源
最近更新 更多