首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法获取从其他文件夹导入的Python

无法获取从其他文件夹导入的Python
EN

Stack Overflow用户
提问于 2009-01-19 03:53:36
回答 5查看 197.4K关注 0票数 100

我似乎无法让Python导入子文件夹中的模块。当我尝试从导入的模块创建类的实例,但导入本身成功时,我得到了错误。下面是我的目录结构:

代码语言:javascript
复制
Server
    -server.py
    -Models
        --user.py

下面是server.py的内容:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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’属性

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-01-19 04:00:15

我认为您需要在Models目录中创建一个名为__init__.py的文件,以便python将其视为一个模块。

然后您可以执行以下操作:

代码语言:javascript
复制
from Models.user import User

您可以在__init__.py中包含代码(例如,一些不同类需要的初始化代码),也可以将其保留为空。但它肯定就在那里。

票数 154
EN

Stack Overflow用户

发布于 2009-01-19 04:02:22

您必须在Models子文件夹上创建__init__.py。该文件可能为空。它定义了一个包。

然后您可以执行以下操作:

代码语言:javascript
复制
from Models.user import User

在python tutorial,here中阅读所有关于它的内容。

还有一篇关于python项目here的文件组织的好文章。

票数 26
EN

Stack Overflow用户

发布于 2012-03-10 09:15:36

当您没有标准的包结构时,导入位于父文件夹上的模块的正确方法是:

代码语言:javascript
复制
import os, sys
CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))
sys.path.append(os.path.dirname(CURRENT_DIR))

(您可以合并最后两行,但这种方式更容易理解)。

此解决方案是跨平台的,并且足够通用,在其他情况下不需要修改。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/456481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档