gpt4 book ai didi

python - 包导入和 NameError

转载 作者:行者123 更新时间:2023-12-04 17:03:14 27 4
gpt4 key购买 nike

我在导入自制模块时遇到了一些麻烦,我只是看不出我做错了什么。

我有一个名为 basics 的包,其中包含我所有的基类
我有一个名为 components 的第二个包,components 中的每个模块都使用基础模块。
我有一个位于另一个文件夹中的脚本文件,它调用了基础模块和组件模块。

我收到以下错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 540, in runfile
execfile(filename, namespace)
File "H:/scripts/CIF_utilities/scripts/hello world.py", line 11, in <module>
TW=TextWriter(r'H:/scripts/CIF_utilities/components')
File "H:\scripts\CIF_utilities\components\textwriter.py", line 23, in __init__
layout=Layout(File=os.path.join(path,'alphabet.CIF'))
NameError: global name 'Layout' is not defined

有我的脚本:hello world.py
#hello world.py
import basics
from components.textwriter import *

TW=TextWriter(r'H:/scripts/CIF_utilities/components')

cell=TW.writeText('Hello World',30e3)
cell.draw()

layout=Layout()
layout.addCell(cell)
layout.workCell=cell

layout.exportCIF('hello world',os.getcwd())

textwriter.py 是给出错误的那个。在 初始化 , 我使用 Layout 类从预格式化的文件中加载一些数据(这将进行导入)
在 textwriter.py 中
#texwriter.py
import basics
import os, os.path, sys
import re
from numpy import *
from scipy import *


class TextWriter:

def __init__(self,pathToCIF=None):
if pathToCIF==None:
path=os.path.split(textwriter.__file__)[0]
else:
path=pathToCIF

###line that crashes is here

layout=Layout(File=os.path.join(path,'alphabet.CIF'))
self.alphabet=layout.workCell

有 layout.py 类:
#layout.py
import basics
from numpy import *
from scipy import *
import Tkinter
import tkFileDialog
import os, os.path
import re
import datetime

class Layout:
countCell=0
@classmethod
def getNewNumber(self):
Layout.countCell+=1
return Layout.countCell


def __init__(self,File=None):
self.cellList=[]
self.layerList=[]
self.nameFile=""
self.comments=""
self.workCell=None

if File!=None:
self.importCIF(File)

初始化 basics 包的 .py 包含所有必要的导入:
#__init__.py in basics folder
from baseElt import *
from cell import *
from layout import *
from transformation import *

初始化 来自组件的 .py 为空

我目前正在使用 anaconda 64bits 发行版(如果我没记错的话,python 2.7)

感谢您的急需帮助!

最佳答案

Layout进口于 basics/__init__.py ,它只存在于 basics命名空间,不在 helloworld.py .要么访问它

layout = basics.Layout()

或明确导入 Layout进入 helloworld.py
from basics import Layout

关于python - 包导入和 NameError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26382767/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com