Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:SystemError父模块未加载,无法执行相对导入_Python_Python 3.x_Python 2.7 - Fatal编程技术网

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
,它成功了!非常感谢!