![](/img/trans.png)
[英]How to include __build_class__ when creating a module in the python C API
[英]How to build a class into a Python module
我有一個類文件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 語句(在導入模塊時只運行一次)。 也就是說,我認為你想要:
foo/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
但這可能會變得混亂,並且在較大的項目中通常不會受到贊賞。
為了實現從包 foo 中的絕對導入,我所做的是將我的類定義移動到py .py 中。 請參閱使用 pip 安裝單個類包而無需 module.pyfile import 。
root/
foo/
__init__.py # where class resides
setup.py
README.md
LICENSE
那我可以做
from foo import f #f is the class previously in the file1.py
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.