【问题标题】:Importing from one module to another从一个模块导入到另一个模块
【发布时间】:2018-03-21 13:34:18
【问题描述】:

我在同一个目录中有两个模块: PDSC2.pydb_layer.py 我想从db_layer.py 导入一个名为DBLayer 的类,所以我写:

from db_layer.py import DBLayer 

但我得到一个错误:

ModuleNotFoundError: No module named 'db_layer'

有人知道我做错了什么吗?

【问题讨论】:

  • import语句中删除.py文件扩展名:from db_layer import DBLayer
  • 是的,照@jdehesa 所说的去做
  • 刚刚做了,同样的错误仍然发生。

标签: python plugins qgis


【解决方案1】:

首先假设这个python文件在同一个目录下,然后从你的代码中删除扩展名。

from db_layer import DBLayer 

或:

from db_layer import *

【讨论】:

  • 你所有的python文件都在同一个目录吗?
  • 可能你在 db_layer.py 中没有任何名为 DBLayer 的类或函数
  • 它会在我输入时自动完成 DBLayer
【解决方案2】:

目录是python搜索模块的地方,python路径吗?目录中是否有__init__.py(可以为空)?

【讨论】:

  • 这看起来像是评论而不是答案。通过点击“添加评论”链接,可以更恰当地将有关帖子的任何问题或问题放在帖子下方。
  • @Zyhael 是的,我更改了 PYTHONPATH 以包含模块,并且目录中确实有一个 init.py 文件。但它仍然有同样的错误。
【解决方案3】:

需要将程序文件db_layer.py粘贴到\Python\Python36-32\Scripts目录下 ,然后使用from db_layer import DBLayerfrom db_layer.py import DBLayer在python程序中调用所需的类。

其实有时候把被调用模块的目录改成\Python\Python36-32\Scripts就可以轻松解决这类问题。

【讨论】:

    【解决方案4】:

    这是对我有用的解决方案:

    import sys
    sys.path.append("C:\\Users\\carmel.han\\AppData\\Roaming\\QGIS\\QGIS3\\profiles\\default\\python\\plugins/filterparcel")
    from db_layer import DBLayer
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-18
      • 2016-08-28
      • 1970-01-01
      • 2018-04-23
      • 1970-01-01
      • 2021-01-15
      • 2019-08-08
      • 1970-01-01
      相关资源
      最近更新 更多