为我的项目中的包获取Python导入错误

时间:2017-01-27 16:46:29

标签: python import

我希望有人可以对我今天遇到的一个非常奇怪的情况有所了解。我有一个完成的项目,在PyCharm中运行良好;但是,当尝试从命令行调用项目时,这是我收到的错误:

return $.getJSON('http://localhost/backoffice/?action=unassignedClients.getUnassingedClients')
            .then((data) => {
                this.setState({resultMe: data.results});
            });

这是我的文件布局:

[root@vodgsnxf-po-a2p ~]# python /opt/gsnworkflow/GSNEventLoop/EventLoop.py
Traceback (most recent call last):
  File "/opt/gsnworkflow/GSNEventLoop/EventLoop.py", line 6, in <module>
   from Modules import FileOperations
ImportError: No module named Modules

我尝试过一系列不同的/opt/gsnworkflow/ |-- __init__.py |-- GSNEventLoop/ | |-- __init__.py | `-- EventLoop.py `-- Modules/ |-- __init__.py |-- Configuration.py |-- Logging.py |-- FileOperations.py `-- Database.py 命令,例如:

sys.path.append

这些选项都没有完全解决我的问题而且我的智慧结束了。有没有人看到任何明显可能错过或做错的事情?我非常感谢能够解决这个问题的人。谢谢!

2 个答案:

答案 0 :(得分:1)

您要做的是从GSNEventLoop调用模块模块。 您需要将模块向上,然后调用模块。

这是在python 3中完成的:

from ..Modules import FilesOperations

Further reading并查找包内引用

关于如何在python 2中完成,请参阅THIS

答案 1 :(得分:0)

我想出来了。我的主要功能存在于GSNEventLoop目录中。我把它移出了Python包的根,然后瞧。所有导入按预期工作。所以现在,我的结构看起来像这样:

  • 的/ opt / gsnworkflow /
    • __初始化__。PY
    • / GSNEventLoop /
      • __初始化__。PY
      • EventLoop.py
    • /模块/
      • __初始化__。PY
      • Configuration.py
      • Logging.py
      • FileOperations.py
      • Database.py
    • GSNMain.py&lt; - 此人包含执行调用事件循环的代码。

一旦我建立了GSNMain.py文件,所有导入和功能都按预期工作。感谢那些提早到达并迅速尝试为此提供支持的人。我喜欢StackOverflow。