我有以下目录结构:
py_test
├── __init__.py
├── dir1
│ ├── __init__.py
│ └── script1.py
└── dir2
├── __init__.py
└── script2.py
from ..dir1 import script1
ImportError: attempted relative import with no known parent package`
import sys, os
path2add = os.path.normpath(os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir, 'dir1')))
if (not (path2add in sys.path)) :
sys.path.append(path2add)
如果我想使用选项1,那么使其工作的最简单(即文件最少)的file/dir结构是什么?我知道这一点,但我想知道是否可以避免创建该目录结构,而仍然使用类型-1import
。
我目前正在使用这个变通方法,它使用type-2import
。
相关的:
正如注释中提到的,如果script2.py
是您的入口点,则无法将模块导入到目录中。
正如本链接中提到的,您包括:
如果模块的__name__
不包含任何包信息(例如,它被设置为__main__
),那么不管模块实际位于文件系统中的哪个位置,相关导入都会被解析为模块是顶级模块。
这将按您希望的方式工作,但相当麻烦。
假设包中有多个脚本需要运行,则可以创建一个新文件,该文件同时导入script1
和script2
,然后根据命令行参数调用所需的功能。这样,您就可以保持当前的目录结构,并使相关导入工作正常,而无需对sys.path
进行任何操作。
这条线出错了。 尝试导入没有已知父包的相对导入 此错误是什么以及如何解决此错误?
我正在学习fastapi。我有这样一个非常简单的项目结构 内部
我正在学习使用python编程,并且我在从包中的模块导入时遇到问题。我正在使用Python 3.8.2 64位的Visual Studio代码。 我的项目目录 在电子商务/产品中。py我拥有的文件: 这样我就可以从电子商务/数据库导入数据库类。py文件。但我有个错误
文件常量只包含一些具有窗口高度和宽度的常量 康斯坦茨·py
因此,我的文件/文件夹结构如下: 在内部,我试图使用以下语法导入:。 我使用的是VSCode,当我键入模块路径时,它甚至会自动完成。但是当我运行文件时,标题中出现了错误。 我在这里读了几十个关于堆栈溢出的答案,但是没有一个使用这样的例子。
我正在学习用python编程,我在从包中的模块导入时遇到了问题。我使用的是Visual studio代码和Python 3.8.2 64位。 我的项目目录 在<code>电子商务/产品中。py文件我有: 这样我就可以从< code > ecommerce/Database . py 文件中导入< code>Database类。但是我出错了