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

2024-05-14 20:07:13 发布

您现在位置:Python中文网/ 问答频道 /正文

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

[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命令,例如:

sys.path.append('/opt/gsnworkflow/')  
sys.path.append('/opt/gsnworkflow/Modules/')  
sys.path.append('/opt/gsnworkflow/GSNEventLoop/')  

所有这些选择都没有解决我的问题,我的智慧也快到了尽头。有没有人看到任何明显的东西,我可能错过或做得不正确?我真的很感激任何能弄明白这一点的人。谢谢!你知道吗


Tags: path项目pymodulesinitsyseventloop情况
2条回答

我想出来了。我的主函数存在于GSNEventLoop目录中。我把它移到Python包的根目录下。所有导入都按预期工作。现在,我的结构是这样的:

  • /opt/GSN工作流/
    • __初始值
    • /GSNEventLoop公司/
      • __初始值
      • 你知道吗事件循环.py你知道吗
    • /模块/
      • __初始值
      • 你知道吗配置.py你知道吗
      • 你知道吗日志.py你知道吗
      • 你知道吗文件操作.py你知道吗
      • 你知道吗数据库.py你知道吗
    • 你知道吗GSNMain.py文件<;这家伙包含调用事件循环的执行代码。你知道吗

一旦我建立了GSNMain.py文件所有导入和功能都按预期工作。感谢那些早早伸出援助之手的人们。我爱你。你知道吗

您要做的是从GSNEventLoop调用模块。 你需要进入module向上然后调用Modules。你知道吗

在Python3中是这样做的:

from ..Modules import FilesOperations

Further reading并查找包内引用

关于在python2中是如何实现的,请参见THIS

相关问题 更多 >

    热门问题