簡體   English   中英

創建可導入的Python 3包/模塊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM