我知道已经有很多与此类似的问题,但不幸的是我还没有找到如何应用到我的问题。
我的项目结构如下:
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
然后我收到以下错误:
SystemError: Parent module 'maincode.bin' not loaded, cannot perform relative import
我尝试使用 Python 2.7.6 和 Python 3.5.2 并获得相同的错误。
你能帮忙吗?预先感谢您!
最佳答案
如果您只想运行该模块而不是整个包。执行 python -m maincode.bin.train
,告诉 python 将其作为模块运行。
如果您想运行整个包,请将目录更改为项目:cd/path/to/project
然后运行:python maincode
如果您的代码已设置正确的话它应该运行train.py。
否则,将脚本移出包并单独运行。
有关此内容和了解包的更多信息可以在此处找到: Relative imports for the billionth time
关于Python:SystemError 父模块未加载,无法执行相对导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47878301/