首页
学习
活动
专区
圈层
工具
发布

2018年8月13日包的相对导入和绝对导入,包的本地发布和网络发布

继承父类的真正作用?...引入最低级也要是模块级别的文件 相对引入:  相对引入的命令必须要在终端中才能运行,输入的命令是:python -m 父目录名.main.py,并且引入的东西都需要 先在__init__文件中事先定义才能正常运行.../方法名/类型名称 from .plane.utils import func func() #这是相对于父目录进行的相对引入,执行的时候不能直接在本模块中执行, 因为在本模块中执行的话python...是唯一一个,不能再相对引入, 所以为了不报错,采用这种引用方式的正确的执行命令是在终端中输入:python -m 父目录名.main.py,找到参照物才能正确执行 有了from的引入方式之后可以引入比模块名更加细致的东西...__init__.py中没有定义任何代码的情况下,通过包名称操作包中的模块代码,那样会出错

72730

NodeJS 导入包的时候出现的 @types 错误导致程序无法运行

在一次开发 NodeJS 项目的时候,我们希望包的导入是用 import 导入的方式。 但是在具体导入的时候发现是使用 @types 导入的。...如果上面的图显示的导入方式,结果结果是导致程序错误无法运行。 问题和原因 尽管我们在包的配置文件中添加了需要导入的包的版本。..."bluebird": "^3.5.1", 但是我们发现还是没有正确的使用,还是使用的是 @types 的方式。...为了让使用 JS 的库能够在 TypeScript 上使用,那么我们在导入的时候需要添加 @types 但是我们的这个问题是,我们并没有添加需要的 @types/bluebird, 但是这个是从哪里来的呢...这个时候,我们需要找到这个包导入的依赖了。 在导入这个包所在项目的文件夹中,打开 package.json 这个文件。 在这个文件中也没有找到这个包的依赖,也不是使用types 定义的。

2.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    python已安装了一个包,但是导入包中的模块时报错没有这个包

    执行import sys; print(sys.path)查看python搜索路径,确保自己的模块在python搜索路径中 python的搜索路径与包(package) python的搜索路径其实是一个列表...,它是指导入模块时,python会自动去找搜索这个列表当中的路径,如果路径中存在要导入的模块文件则导入成功,否则导入失败: >>> import sys >>> sys.path ['', 'C:\\Python33...,如果不是按照标准方式安装,则为了能够引用(import)这些模块,必须将这些模块的安装路径添加到sys.path中,有以下几种方法: 最简单的方法:是在sys.path的某个目录下添加路径配置文件,...路径配置文件的扩展名是”.pth”,其中的每一行包含一个单独的路径,该路径会添加到sys.path列表中(已验证)。”....pth”中的路径既可以是绝对路径,也可以是相对路径,如果是相对路径,则是相对于包含”.pth”文件的路径而言的。 终极解决办法:重新安装python

    6.2K10

    Go命令官方指南【原译】

    当运行go命令时,它会查找当前目录,然后查找连续的父目录,以查找标记主(当前)模块根目录的go.mod。 go.mod文件本身是面向行的,带有//注释但没有/ * * / comments。.../开头的导入路径称为相对路径。工具链以两种方式支持相对导入路径作为快捷方式。 首先,相对路径可以用作命令行上的简写。...当版本控制系统支持多种协议时,在下载时依次尝试每种协议。例如,Git下载尝试https://,然后是git + ssh://。 默认情况下,下载仅限于已知的安全协议(例如https,ssh)。...如果导入路径不是已知的代码托管站点且缺少版本控制限定符,则go工具会尝试通过https / http获取导入,并在文档的HTML 中查找标记。...导入路径检查 当上述自定义导入路径功能重定向到已知代码托管站点时,每个生成的包都有两个可能的导入路径,使用自定义域或已知的托管站点。

    8.7K30

    一文搞懂 Python 的模块和包,在实战中的最佳实践

    在设计之初,我就考虑到了模块重名的问题,所以在 main.py 文件头部,我并没有 from 包 import 模块,而是 from 包 import 包,以避免模块命名冲突的问题。...既然执行模块脚本时,脚本程序无法以绝对导入的方式,引用父级目录中的模块,那么我用相对导入的方式,是否可以解决? 于是,我将代码调整为相对导入:from .. import config。...__ 字符串,则相对导入无法从中分析出父级包的信息,自然会报上面的错误:“尝试从未知的父包中进行相对导入”,了然。...(),但此方案非常简洁,且 PyCharm 就是用这种方式,支持模块直接以脚本方式运行,而又能使用绝对导入的。...由此看来,我推荐的方式是,大多数情况下,总是以绝对导入的形式,来引用你项目的包和模块。那相对导入就无用武之地了吗?

    2.1K41

    python 路径管理以及常见报错

    .代表当前目录, ..代表父目录 工作目录 当前执行命令所在的目录 # 将工作目录添加进当前的路径列表 sys.path.append(os.getcwd()) 路径列表 查看当前路径列表 只有在路径列表当中的包和模块才可以导入和调用...修改包名即可 导入的不是一个包 `ModuleNotFoundError: No module named '__main__.jd_parser'; '__main__' is no t a package...当前访问路径已经超过了python已知的最大路径 from tutorial_2.jd_crawler.jd_parser.search import parse_jd_item top-level...package 指的是上述from导入命令中的首路径tutorial_2, 而不是根据目录结构 把工作目录加入到路径列表当中 进入到项目根目录下执行命令 上述两个操作相当于将项目根目录加入到路径列表当中...注意事项 确定入口程序, 没有一个锚定的路径就没有办法做相对路径的管理 将项目根目录加入到入口程序当中 进入到项目根目录下执行命令 项目目录结构不要嵌套的太深 脚本文件或者临时运行单个模块中的方法,

    1.4K20

    一日一技:导入父文件夹中的模块并读取当前文件夹内的资源

    摄影:产品经理 产品经理独自在深圳吃的早餐 在某些特殊情况下,我们的 Python 脚本需要调用父目录下的其他模块。例如: ?...它的文件结构与每个文件中的内容如下: ? 现在,我直接在 scripts 文件夹里面运行run.py会报错,提示从包的最顶层之外相对导入。...现在,我们改一下代码,尝试在scripts 文件夹的父文件夹中运行代码,发现还是会报错: ?...大家有没有发现一个很不和谐的东西:其他路径都是绝对路径,就最后我们加了两个点看起来很违和。那如果我们把这两个点换成绝对路径呢?...导入模块已经正常了,但是读取资源文件又异常了。 这是因为,import导入模块时,是根据sys.path中的路径来寻找的。但是读取资源文件的时候,相对文件路径是相对于工作区来寻找的。

    2.4K30

    python包相对导入

    为使python2,3通用,建议采用相对路径导入from .a import b 一个目录存在__init__.py文件,则该目录成为一个包。...包中的一个模块可以采用相对路径导入包,不影响模块功能;一个py脚本(未成为模块,即其目录及父目录内无__init__.py)可以采用相对路径导入包,并以脚本模式运行。...但包含相对导入的模块,不能直接以脚本模式运行,常见报错为: # python2 Traceback (most recent call last): File "module_x.py", line...注意:此时若loc.py代码中有其他相对路径,此时的相对路径是基于shell命令所在位置,即~的,可能会造成错误。...还有句话不太理解: 如果一个模块被直接运行,则它自己为顶层模块,不存在层次结构,所以找不到其他的相对路径。 ---- 参考: Python 相对导入与绝对导入

    2.3K10

    【Python报错已解决】NameError: name ‘os‘ is not defined

    通常,这个错误发生在我们试图使用 os 模块中的功能,但忘记导入该模块。本文将探讨这个错误的原因,并提供几种解决方案。...一、问题描述 1.1 报错示例 以下是一个简单的示例,演示了如何引发这个错误: import sys # 尝试使用os模块,但没有导入它 print(os.listdir('.'))...当运行上述代码时,你将得到以下错误: NameError: name 'os' is not defined 1.2 报错分析 这个错误表明在当前的作用域中,os 变量没有被定义。...os 是Python标准库中的一个模块,它提供了与操作系统交互的功能。如果你尝试使用 os 模块的功能,但没有先导入它,就会遇到这个错误。...from os import listdir print(listdir('.')) 2.4 方法四:使用相对导入 如果你在同一个包或模块内部,可以使用相对导入。

    36510

    Python第九周 学习笔记(1)

    Ctrl+C终端操作 Exception 所有内建、非系统退出的异常的基类,自定义异常需要继承它 SyntaxError语法错误 此错误不可捕获 ArithmeticError 算术计算错误,子类有除零异常等......与from ... import ... as ... from后指定的模块名只加载并初始化,不导入 对于import子句后的名称 先查from导入的模块是否具有该名称属性,如果不是,则尝试导入该名称的子模块...目录下有一个init.py文件,导入包时,此文件内容代表此包 子模块 包目录下的py文件、子目录都是其子模块 模块和包总结 导入子模块一定会加载父模块,导入父模块一定不会导入子模块 包是特殊的模块,包含...path属性 绝对导入,相对导入 绝对导入 总是去搜索模块搜索路径中找 相对导入 只能在包内使用,且只能用在from中 ....(sys = impot('sys') 等价于import sys),但建议不直接使用,建议使用 importlib.import_module(name, package=None) 支持绝对导入和相对导入

    62010

    “ModuleNotFoundError“深度解析:Python模块导入问题的终极指南

    module.py # main.py from mypackage.module import func # 正常工作 # module.py from .submodule import helper # 相对导入错误...常见错误: 缺少__init__.py文件(Python < 3.3) 错误的相对导入(在脚本中而非包内使用) 命名空间包配置问题 包命名与标准库冲突 2.3 环境与配置问题(...使用pip安装可编辑包 pip install -e /path/to/your/package 4.2 包结构问题解决方案 相对导入修复: # 错误:在脚本中使用相对导入 from .sibling...通过本文的探索,我们了解到: 理解机制:深入Python导入过程是解决问题的关键 系统诊断:使用系统化方法而非盲目尝试 预防优先:良好的项目结构是最好的防御 工具辅助:利用现代工具链管理依赖...记住这些原则,您将能够轻松应对各种导入挑战: "优秀的开发者不是不犯错误,而是建立了防止错误的系统。"

    1.1K10

    python中import星_Python imports 指北

    初始化是在包导入时触发的,换句话说,导入包时调用__init__.py当你导入一个包时,包内的__init__.py模块被执行 在__init__模块中,你可以做任何你想做的事情,但最常用的是用于一些包初始化或设置专用的...绝对和相对导入 上面的2个代码段是做所谓的相对导入的唯一方法,因为自Python 3开始,所有导入都默认为绝对导入(如在PEP328中),这意味着导入将尝试首先导入标准模块,然后才导入本地包。...自Python 3开始,所有导入都默认为绝对导入 - 它将首先查找系统包 但是如果你的软件包有一个名为sys的模块,并且你想把它导入到同一个包内的另一个模块中,你必须做相对的导入。...模块名称之前的那个有趣的点理解为“当前包”。要进行相对导入,请在模块名前加上程序包名称或点 可执行程序包 在Python中,您可以使用python3 -m 构造调用模块。...这里有几个StackOverflow问题: 好的解决方案是把测试或例子放在包里,然后使用相对的导入来避免这个问题。 差点的解决方案是在运行时修改sys.path,增加所需包的父目录(耶,动态!)。

    1.3K00

    Go语言内部包--控制包成员的对外暴露

    在 Go 语言里包的导入路径不同则被判定为不同的包,所以同一个软件包项目下的「功能一」包依赖「功能二」包里的成员时,那么成员必须是导出成员才能被「功能一」包引用。...内部包 Go语言1.4版本后增加了 Internal packages 特征用于控制包的导入,即internal package只能被特定的包导入。...内部包的规范约定:导入路径包含internal关键字的包,只允许internal的父级目录及父级目录的子包导入,其它包无法导入。...当在prototype包的代码中导入并调用resources/internal/cpu包的函数时,编译器根据文件的目录结构判断出来prototype包相对于被导入的包是外部包,所以整个程序会编译失败,报类似下面的错误...当 go 编译器在导入路径中看到带有internal/的软件包被导入时,它将验证导入包的程序文件是否位于internal/目录的父级目录,或父级目录的子目录中。

    1.7K40

    JVM活学活用——类加载机制

    (LinkageError错误)如果这个类一直没有被程序主动使用,那么类加载器就不会报告错误。...,只有当父加载器在它的搜索范围中没有找到所需的类时,即无法完成该加载,子加载器才会尝试自己去加载类。...如果包中类或者资源所在的包由bundle导出,或者包由bundle导入(使用Import-Package或者Require-Bundle),查找结束,即类或者资源没有找到。...否则,如果类或者资源所在的包是通过使用DynamicImport-Package进行导入,那么试图进行包的动态导入。导出者exporter必须符合包约束。...如果找到了合适的导出者exporter,然后建立连接,以后的包导入就可以通过步骤三进行。如果连接建立失败,那么请求失败。 如果动态导入建立了,请求交由导出bundle的类加载器代理。

    1.1K80

    解决Python无法导入同目录py文件的完整指南 | Python导入问题

    import utils时,有时会出现导入错误。...相对导入与绝对导入混淆在包内部使用相对导入时,需要确保文件是作为模块运行的,而不是作为主脚本运行。...最佳实践保持项目结构清晰,使用包组织代码在项目根目录运行脚本或使用-m参数优先使用绝对导入,除非在包内部需要相对导入为项目创建虚拟环境,避免路径冲突在复杂项目中,使用setup.py或pyproject.toml...Q: 相对导入和绝对导入哪个更好?A: 在包内部推荐使用相对导入,在顶层脚本或模块间导入推荐使用绝对导入。避免在脚本文件中使用相对导入。Q: 添加__init__.py文件后仍然无法导入怎么办?...A: 确保:1) 在正确的目录层级运行脚本;2) 包名称没有与标准库冲突;3) 使用Python 3.3+(支持隐式命名空间包)。

    74700

    Python基础-6 模块和包

    最简情况下,__init__.py 只是一个空文件,但该文件也可以执行包的初始化代码,或设置 __all__ 变量,详见下文(从包中导入*)。...• 可以从包中导入单个模块,例如: import sound.effects.echo 这段代码加载子模块 sound.effects.echo ,但引用时必须使用子模块的全名: sound.effects.echo.echofilter...优先查找包中定义的函数、类或变量等,未找到则假定 item 是模块,并尝试加载模块。如果仍然找不到 item,则触发 ImportError 异常。...__all__ = ["echo", "surround", "reverse"] 相对导入 包中含有多个子包时还可以用 import 语句的 from module import name 形式执行相对导入...这些导入语句使用前导句点表示相对导入中的当前包和父包。

    44420
    领券