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扩展到