从较低级别文件导入***文件[重复]

Posted

技术标签:

【中文标题】从较低级别文件导入***文件[重复]【英文标题】: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 是粗体的 :) 【参考方案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

【讨论】:

以上是关于从较低级别文件导入***文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

目录树中不同级别的CORBA python文件而不是导入它们的模块

从所有文件夹递归导入所有.py文件[重复]

反应导入组件文件夹[重复]

导入文件夹之外的用户制作模块[重复]

将 csv 文件导入列表列表 [重复]

使用python导入不同的文件[重复]