__init__.py 中应该有什么
What is supposed to be in __init__.py
我正在尝试创建一个 Python 包。你可以看看我糟糕的尝试here.
我有一个名为 imguralbum.py
的模块。它位于一个名为 ImgurAlbumDownloader
的目录中,据我所知这是包的名称——根据您在 import
语句中键入的内容,例如
import ImgurAlbumDownloader
我的模块包含两个 类 ImgurAlbumDownloader
和 ImgurAlbumException
。我需要能够在另一个模块(脚本)中同时使用这两个 类。但是,我终其一生都无法弄清楚我应该在我的 __init__.py
文件中放入什么来做到这一点。我意识到这重复了很多以前回答的问题,但建议似乎很矛盾。
我还得弄清楚为什么(我有一些想法),但现在可以了:
from ImgurAlbumDownloader.imguralbum import ImgurAlbumDownloader, ImgurAlbumException
诀窍是将包名称添加到模块名称中。
在我看来,您确实不想要包裹。如果你的代码只做一件主要的事情并且它的所有部分都密切相关,那么只使用一个模块是可以的。当您的代码的不同部分可能不会同时需要时,或者当您的代码太多以至于单个模块会非常大并且很难在其中找到东西时,包很有用。
我正在尝试创建一个 Python 包。你可以看看我糟糕的尝试here.
我有一个名为 imguralbum.py
的模块。它位于一个名为 ImgurAlbumDownloader
的目录中,据我所知这是包的名称——根据您在 import
语句中键入的内容,例如
import ImgurAlbumDownloader
我的模块包含两个 类 ImgurAlbumDownloader
和 ImgurAlbumException
。我需要能够在另一个模块(脚本)中同时使用这两个 类。但是,我终其一生都无法弄清楚我应该在我的 __init__.py
文件中放入什么来做到这一点。我意识到这重复了很多以前回答的问题,但建议似乎很矛盾。
我还得弄清楚为什么(我有一些想法),但现在可以了:
from ImgurAlbumDownloader.imguralbum import ImgurAlbumDownloader, ImgurAlbumException
诀窍是将包名称添加到模块名称中。
在我看来,您确实不想要包裹。如果你的代码只做一件主要的事情并且它的所有部分都密切相关,那么只使用一个模块是可以的。当您的代码的不同部分可能不会同时需要时,或者当您的代码太多以至于单个模块会非常大并且很难在其中找到东西时,包很有用。