【问题标题】:Importing top level file from lower level file [duplicate]从较低级别文件导入顶级文件[重复]
【发布时间】:2018-04-28 18:39:47
【问题描述】:

对此我不清楚:__init__.py 将当前文件夹描述为一个模块,不是吗?

因此,如果我的顶级项目文件夹my_project 包含文件config.py (my_project/config.py),那么my_project/drivers/sales/customer.py 中的文件应该能够通过以下方式导入config.py 模块:

  • import my_project.config(错误至:ModuleNotFoundError: No module named 'my_project'
  • 或者,from .. import config(错误至:ValueError: attempted relative import beyond top-level package)-顺便说一句,尝试使用三个点 (...) 时出现相同的错误。
  • 或者,只是import config(错误:ModuleNotFoundError: No module named 'config'

使用以下终端命令:

(env) localhost:/Users/myname/Sites/my_project
$ python drivers/sales/customer.py 

我怎样才能完成这个导入?

版本:

$ python
Python 3.6.2 (default, Jul 17 2017, 16:44:45) 

【问题讨论】:

  • 最近也让我大吃一惊,我认为在你的情况下:从 .. 导入配置,因为你的文件是 2 级深,所以 2 个点
  • @Kris 同样的错误。见上文
  • 好的,最后一次尝试:您是否尝试在销售文件夹中添加一个空的 init.py,然后尝试使用 from .. import config?对不起,如果这感觉像是在猜测(公元前。它是!),但我仍然无法将我的头包裹在 python 相关导入中......
  • 层次结构中的所有文件夹都需要有init.py文件
  • @Kris 我想知道怎么做,但我知道为什么你的 init 是粗体的 :)

标签: python


【解决方案1】:

一种方法是将项目的路径公开如下:

import sys
sys.path.append('path/to/your/project') # /Users/nabin/Desktop in my case 

#I have "my_project" in Desktop i.e /Users/nabin/Desktop/my_project

那么你可以做以下事情

from my_project import config

因此,当合并时,您需要以下内容:

import sys
sys.path.append('path/to/your/project')

from my_project import config

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    相关资源
    最近更新 更多