Python:SystemError 父模块未加载,无法执行相对导入

标签 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 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/

相关文章:

python - 如何使用 Binance API 和 Python-CCXT 下百分比订单?

Python - 按值中的第二项对嵌套字典进行排序

mysql - Airflow如何获取和处理mysql记录?

python - 对 Groovy 脚本调用的 Python 脚本中的异常进行编码

python - 渲染 3D 数组中的可见体素,无需全部迭代

python-3.x - 内核似乎已经死亡。它会自动重新启动。内存有问题吗?

python - 基于顶点名称 Python igraph 执行图的并集

python - importError python while import exists and Pycharm recognize it

python - datetime.datetime.strptime 将字符串转换为日期时间时出现错误 未转换日期 remands : 2

python - 在 MySQL 中搜索短语关键字