当子文件试图访问父文件时为什么会出现导入错误
Why do I get an import error when a child file is trying to access a parent file
我的目录结构如下
>project
>tests
>test_to_json.py
>app.py
>x.db
在我的 test_to_json.py
中,我想从 app.py
访问 class
我将如何导入它?我试过 from ..app import myClass
,但结果是 ImportError: attempted relative import with no known parent package
。有什么我想念的吗?
您不能在 python 中使用 ..
相对路径。那种特定类型的亲戚 python 是根本不允许的。但是 .
是允许的。通常通过将您的项目转换为 python 包来解决此问题。
可以找到相关的广泛教程here,但我将举例说明如何将您的项目转换为包。
步骤 1
新的文件结构应该是这样的:
>project
>tests
>__init__.py #Note this file
>test_to_json.py
>__init__.py #Note this file
>setup.py #Note this file
>app.py
>x.db
第 2 步
写下你的setup.py
.
这是适用于您的项目的通用 setup.py
:
from setuptools import setup, find_packages
setup(
name='project_package', #the name of your desired import
version='0.0.1',
author='An Awesome Coder',
packages=find_packages(),
description='An awesome package that does something',
install_requires=[], # a list of python dependencies for your package
)
find_packages()
查找包中的所有 __init__.py
文件以识别子模块。
步骤 3
安装你的包。在包含新 setup.py
、运行 pip install -e .
的文件夹中 这将在您的计算机上安装您的软件包,基本上是将文件添加到您的 python 系统路径。
第 4 步
从您计算机上的任何 python 终端,您现在应该能够使用您指定的 package_name
导入您的包。
import project_package
from project_package.app import myClass
myClass()
.
.
.
我的目录结构如下
>project
>tests
>test_to_json.py
>app.py
>x.db
在我的 test_to_json.py
中,我想从 app.py
我将如何导入它?我试过 from ..app import myClass
,但结果是 ImportError: attempted relative import with no known parent package
。有什么我想念的吗?
您不能在 python 中使用 ..
相对路径。那种特定类型的亲戚 python 是根本不允许的。但是 .
是允许的。通常通过将您的项目转换为 python 包来解决此问题。
可以找到相关的广泛教程here,但我将举例说明如何将您的项目转换为包。
步骤 1
新的文件结构应该是这样的:
>project
>tests
>__init__.py #Note this file
>test_to_json.py
>__init__.py #Note this file
>setup.py #Note this file
>app.py
>x.db
第 2 步
写下你的setup.py
.
这是适用于您的项目的通用 setup.py
:
from setuptools import setup, find_packages
setup(
name='project_package', #the name of your desired import
version='0.0.1',
author='An Awesome Coder',
packages=find_packages(),
description='An awesome package that does something',
install_requires=[], # a list of python dependencies for your package
)
find_packages()
查找包中的所有 __init__.py
文件以识别子模块。
步骤 3
安装你的包。在包含新 setup.py
、运行 pip install -e .
的文件夹中 这将在您的计算机上安装您的软件包,基本上是将文件添加到您的 python 系统路径。
第 4 步
从您计算机上的任何 python 终端,您现在应该能够使用您指定的 package_name
导入您的包。
import project_package
from project_package.app import myClass
myClass()
.
.
.