Python:SystemError父模块未加载,无法执行相对导入
我知道已经有很多类似的问题,但不幸的是,我还没有找到如何应用到我的问题 我的项目结构如下:Python:SystemError父模块未加载,无法执行相对导入,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我知道已经有很多类似的问题,但不幸的是,我还没有找到如何应用到我的问题 我的项目结构如下: Project |___ maincode |___ __init__.py |___ losses.py |___ bin |___ __init__.py |___ train.py 然后在train.py中,我有以下代码: # Allow relative imports when being executed as
Project
|___ maincode
|___ __init__.py
|___ losses.py
|___ bin
|___ __init__.py
|___ train.py
然后在train.py
中,我有以下代码:
# Allow relative imports when being executed as script.
if __name__ == "__main__" and __package__ is None:
__package__ = "maincode.bin"
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..'))
from .. import losses
def main(args=None):
#some code here
if __name__ == '__main__':
main()
现在,如果我从项目主目录project/
执行脚本train.py
,即在终端中运行以下命令:
maincode/bin/train.py
然后我得到以下错误:
系统错误:未加载父模块“maincode.bin”,无法
执行相对导入
我尝试了Python2.7.6和Python3.5.2,得到了相同的错误
你能帮忙吗?提前谢谢你 如果您只想运行该模块而不是整个软件包。Do
python-m maincode.bin.train
,它告诉python将其作为模块运行
如果要运行整个包,请将目录更改为项目:cd/path/to/Project
,然后运行:python maincode
,如果代码设置正确,则应运行train.py
否则,请将脚本移到包之外并自行运行
更多关于此和理解包的信息,请参见:
同一目录中的文件只能使用“导入模块”,不能使用“from”关键字,原因不明您想只运行train.py还是整个应用程序?@edlee主代码位于
train.py
,这取决于项目的其余部分,所以我想我必须运行整个应用程序?文档所说的应该是有效的。我不明白为什么不行。@user2357112我不知道:(我尝试了python-m maincode.bin.train
,它成功了!非常感谢!