Python包和导入-没有名为xy的模块

Python包和导入-没有名为xy的模块,python,package,Python,Package,我正试图这样组织我的项目 app/ __init__.py web/ __init__.py web.py database/ __init__.py db.py 我只想将几个类从db.py导入web.py,但只导入一个ImportError:没有抛出名为的模块。到目前为止我试过什么 web.py from __future__ import absolute_import from database.db import ClassA OR from

我正试图这样组织我的项目

app/
__init__.py
web/
    __init__.py
    web.py
database/
    __init__.py
    db.py
我只想将几个类从
db.py
导入
web.py
,但只导入一个
ImportError:没有抛出名为
的模块。到目前为止我试过什么

web.py

from __future__ import absolute_import
    from database.db import ClassA
OR

from __future__ import absolute_import
from app.database.db import ClassA

OR

from __future__ import absolute_import
import database import ClassA
我错过了什么

//编辑:

db/__init __.py
from db import ClassA
所有其他
\uuuuu init\uuuuuuuuuy.py
均为空。我想我在这件事上做错了什么。

应该是这样的

from ..database import db
您还可以通过从项目根目录运行
web.py
来检查导入

python -m app.web.web
假设:

C:\pytest\
   test.py
   \database\
       db.py
       __init__.py
   \subfolder\
       __init__.py
       coolios.py
其中
\uuuu init\uuuuu.py
包含:

from db import *
from coolios import *
class WHAM():
    def __init__(self):
        print 'You import me!'
from database import *

class ganster():
    def __init__(self):
        WHAM()
from subfolder import ganster
ganster()
第二个
\uuuu init\uuuu.py
包含:

from db import *
from coolios import *
class WHAM():
    def __init__(self):
        print 'You import me!'
from database import *

class ganster():
    def __init__(self):
        WHAM()
from subfolder import ganster
ganster()
db.py
包含:

from db import *
from coolios import *
class WHAM():
    def __init__(self):
        print 'You import me!'
from database import *

class ganster():
    def __init__(self):
        WHAM()
from subfolder import ganster
ganster()
并且
coolios.py
包含:

from db import *
from coolios import *
class WHAM():
    def __init__(self):
        print 'You import me!'
from database import *

class ganster():
    def __init__(self):
        WHAM()
from subfolder import ganster
ganster()
test.py
包含:

from db import *
from coolios import *
class WHAM():
    def __init__(self):
        print 'You import me!'
from database import *

class ganster():
    def __init__(self):
        WHAM()
from subfolder import ganster
ganster()

它应该可以工作。

你的uuuuuuuu init uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuy.py中有什么?检查我的编辑@TorxedSee我的解决方案,Python2.7工作得很好,因为你没有提前提到你正在使用的版本,并且写了一个符合。您也可以将项目文件夹设置到python路径中,但我不太喜欢这种方式,因为它可能会导致与其他python包的冲突您的答案是:ValueError:尝试在非包中进行相对导入我现在必须返回(这里已经是下午6点了)。对于您的情况,尝试制作一些简单的python包/文件夹并使用导入功能,您将看到结果,比如说
demo/main.py,demo/\uu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuy,demo/a/a.py,demo/b/b.py,demo/b/b/\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu看看它是否有效。记住将dir从demo文件夹中更改出来,然后运行
python-mdemo.main
。好luckI,我想我已经找到了答案:我直接在web.py上运行IDEA的代码。如果我将一个python文件移动到我的顶层包,例如根文件夹,然后从那里导入web内容,它就会执行。但我不想从子文件夹/包中调用WHAM。查看我的当前结构查看我的更新,默认的“方法”仍然是可能的,因为默认情况下,导入是从根工作目录进行的,所以只要不乱用chwd()或类似的东西,就可以从其他模块(文件夹)进行导入从文件夹导入执行
*
,然后调用您希望能够调用的函数。它从/FOLDER/import扩展到