我似乎无法让Python导入子文件夹中的模块。当我尝试从导入的模块创建类的实例,但导入本身成功时,我得到了错误。下面是我的目录结构:
Server
-server.py
-Models
--user.py
下面是server.py的内容:
from sys import path
from os import getcwd
path.append(getcwd() + "\\models") #Yes, i'm on windows
print path
import user
u=user.User() #error on this line
和user.py:
class User(Entity):
using_options(tablename='users')
username = Field(String(15))
password = Field(String(64))
email = Field(String(50))
status = Field(Integer)
created = Field(DateTime)
错误是: AttributeError:'module‘对象没有'User’属性
发布于 2009-01-19 04:00:15
我认为您需要在Models目录中创建一个名为__init__.py
的文件,以便python将其视为一个模块。
然后您可以执行以下操作:
from Models.user import User
您可以在__init__.py
中包含代码(例如,一些不同类需要的初始化代码),也可以将其保留为空。但它肯定就在那里。
发布于 2009-01-19 04:02:22
发布于 2012-03-10 09:15:36
当您没有标准的包结构时,导入位于父文件夹上的模块的正确方法是:
import os, sys
CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))
sys.path.append(os.path.dirname(CURRENT_DIR))
(您可以合并最后两行,但这种方式更容易理解)。
此解决方案是跨平台的,并且足够通用,在其他情况下不需要修改。
https://stackoverflow.com/questions/456481
复制相似问题