【问题标题】:Python: How to add module from sibling folderPython:如何从同级文件夹添加模块
【发布时间】:2017-10-05 08:07:34
【问题描述】:

我的 Python 项目具有以下文件夹结构:

pythonApp             --> Folder
|--ABC                --> Package
   |--__init__.py     --> Empty File
   |--abctest.py      --> Module
|--DEF                --> Package
   |--__init__.py     --> Empty File
   |--deftest.py      --> Module
|--Common             --> Package
   |--__init__.py     --> Empty File
   |--constants.py    --> Module

我想在abctest.py中的Common包下导入constants.py。使用from Common import constants 会引发错误Module not found。有什么解决办法吗?

【问题讨论】:

  • pythonApp 根目录下是否有__init__.py
  • @GarrettKadillak:是的,在 pythonApp 根目录中,我确实有 init.py 文件

标签: python visual-studio module package python-import


【解决方案1】:

abctest.py中,使用__file__作为当前模块名,将父目录添加到python路径,然后取目录名的目录名计算它:

import os,sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from Common import constants

注意:python 2 似乎需要Common 目录中的__init__.py 文件(甚至是空的)才能将Common 识别为模块,而python 3 可以没有。

【讨论】:

  • Fabre:我所做的是直接在 pythonApp 文件夹下创建了一个 run.py。我将 run.py 设置为启动文件。并包含以下代码:import os,sys sys.path.append(os.path[0] + '\ABC')。它在本地运行良好。但是当我创建一个可执行文件时,它会崩溃。
  • 你能告诉我们你是如何创建你的可执行文件的吗(也许编辑你的问题以包括那部分)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-19
  • 1970-01-01
相关资源
最近更新 更多