python - 如何将类构建到 Python 模块中
问题描述
我有一个类文件fil1.py
,在这个文件中,只有一个类叫做f
. 我想将这个类文件构建到一个模块中,我尝试过像这样组织我的文件:
foo/
foo/
__init__.py
file1.py # where class resides
setup.py
README.md
LICENSE
在中__init__.py
,我有一句话:
from file1 import f
然后,当我在 pypi 上发布然后安装回我的本地计算机时。当我尝试:
from foo import f
我收到一条错误消息:
ImportError: cannot import name 'f' from 'foo'
我也试过
import foo
foo.f
错误消息是:
foo has no attribute f
我不确定如何实现我想要的。
解决方案
Python 中没有“类文件”之类的东西。文件是一个模块,模块可能包含零个或多个类、函数或未包含在类或函数中的有效 python 语句(在导入模块时只运行一次)。也就是说,我想你想要:
富/file1.py:
class f:
[...]
foo/__init__.py:
from foo.file1 import f
那么以下所有内容都是有效的(假设foo
在 上可用sys.path
,其中包括当前工作目录自动作为第一个条目):
import foo
import foo.file1
from foo import f
from foo.file1 import f
foo
是一个包(因为它包含__init__.py
),其中包含一个名为file1
. 或者,您可以在内部使用相对导入__init__.py
:
from .file1 import f
但这可能会变得混乱,并且在大型项目中通常不受欢迎。
推荐阅读
- akka - Akka http 流式传输响应标头
- c# - 如何使用表单身份验证获取 Windows 用户凭据?
- delphi - Delphi 10.2 编辑器中是否有热键可以反转所选文本的大小写?
- powershell - 如何将文件从 azure 存储帐户下载到 power shell 中的临时文件变量
- swift - iOS - 如何从 AppDelegate 中删除 UINavigationController?
- scala - Scala中的动态滑动窗口
- python - 警告:未在 main() 线程中创建 QApplication
- vbscript - cmd中的WScript.Echo输出命令
- android - 毕加索无法从用孟加拉语写的 url 加载图像
- php - PHP - preg_match 或多个 HTML Lines 对象上的等效项以创建数组