[英]Creating importable Python 3 package / module
我在創建可導入的Python包/庫/模塊或任何正確的命名法時遇到了麻煩。 我正在使用Python 3.7
我正在使用的文件結構是:
Python37//Lib//mypackage
mypackage
__init__.py
mypackage_.py
__init__.py
的代碼是:
from mypackage.mypackage_ import MyClass
mypackage_.py
的代碼是:
class MyClass:
def __init__(self, myarg = None):
self.myvar = myarg
在我的桌面上,我嘗試運行以下代碼:
import mypackage
x = MyClass(None)
但是出現以下錯誤:
Traceback (most recent call last):
File "C:\Users\***\Desktop\importtest.py", line 3, in <module>
x = MyClass(None)
NameError: name 'MyClass' is not defined
您尚未將名稱MyClass
導入當前的名稱空間。 您已導入mypackage
。 要訪問mypackage
任何內容,您需要在名稱前加上mypackage.<Name>
import mypackage
x = mypackage.MyClass(None)
正如@rdas所說,您需要在名稱前加上mypackage.<Name>
。
我不建議這樣做,但是您可以通配符導入以使x = MyClass(None)
起作用:
from mypackage import *
現在, mypackage
所有內容mypackage
導入,並且可以在當前名稱空間中使用。 但是,您必須小心通配符導入,因為它們會創建定義沖突(如果多個模塊在不同事物上具有相同的名稱)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.