[英]Confused with Python's import intrapackage references
我運行Python 2.7.6。 我在創建程序包時遇到問題。 以下是MWE:
我有以下文件:
run.py
MyPackage/
__init__.py
Father_class.py
Son_class.py
class1.py
具有以下內容:
初始化 .py
__all__ = ['Father_class', 'Son_class', 'class1']
運行
from MyPackage import Father_class, Son_class
Father_class.py:
class Daddy(Object):
def __init__(self):
self.hello=1
Son_class.py:
from MyPackage import *
# alternatively I tried: from MyPackage import class1, Father_class
class Sonny(Daddy):
def __init__(self):
super(Daddy, self).__init__()
self.bye=class1.MyClass1()
#alternatively I tried self.bye=MyClass1()
class1.py:
class MyClass1(Object):
def __init__(self):
self.life=1
運行run.py時,我得到:
self.bye=class1.MyClass1()
NameError: global name 'class1' is not defined
關於我在做什么錯的任何想法?
除非導入的內容在全局site-packages
或在virtualenv中可用,否則您只能相對於導入來源導入模塊。 因此模塊a
在Package/a
無法導入模塊b
在package/b
通過導入package
並從那里進行導航,但是它可以導入b
直接(在相同的電平是):
對於Son_class.py,請使用:
from class1 import MyClass1
from Father_class import Daddy
class Sonny(Daddy):
def __init__(self):
super(Daddy, self).__init__()
self.bye=MyClass1()
否則,建議在導入過程中具體輸入,並准確導入所需的定義:一旦需要重構任何內容,這將有很大的幫助。 如果要明確記下導入路徑,則還會收到一條更明智的錯誤消息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.