Python导包问题

文章目录

  • 1问题背景
  • 2参考资料及分析
  • 3可以兼顾的方法

1问题背景

  1. 需要在当前文件中导入当前文件的上级目录下某个文件夹中的文件,如下图所示

    1. 即在CBOW.py文件中导入utils\Embedding.py文件中的类;

    在这里插入图片描述

2参考资料及分析

  1. 如何将Python的上级目录的文件导入?【from.import】_python导入上级目录下的文件-CSDN博客中的以下内容我觉得是有用的:

    在这里插入图片描述

    1. 即如果运行上图中的CBOW.py文件,则improved_CBOW目录就不会被识别成一个包了;此时就算加入sys.path.append("..")语句,也会报错,因为不是一个包自然找不到上级目录

      在这里插入图片描述

    2. 但是如果是像博客中说的,在外面用一个文件来启动程序,则是可以的,如下图所示;此时从temp.py执行程序,因此improved_CBOW目录可以被识别成包,相对路径可以使用,sys.path.append("..")语句有效,于是可以从utils.Embedding文件导入类了。

      在这里插入图片描述

    3. 因此,我们看到,使用sys.path.append("..")语句在一种情况下起作用,在另一种情况下就不起作用;那么我们写程序,肯定是先在类似CBOW.py的文件中通过if __name__ == "__main__":进行调试,没有问题了才采用temp.py的方式调用CBOW.py;那如果使用sys.path.append("..")语句则需要来回切换,个人感觉比较麻烦。

    4. 为了解决这个痛点,这篇博客中提到的另一种使用绝对路径的方法就可以大显身手了:

      在这里插入图片描述

3可以兼顾的方法

  1. 像博客中说的那样,在CBOW.py文件中设置CBOW.py的上级目录,然后在CBOW.py文件中执行程序,如下图所示:

    1. 既然此时improved_CBOW目录不会被识别成一个包,相对路径不起作用,那就用绝对路径,这种可以找到了;
    2. 然后我们就可以直接导入utils目录下的文件以及子文件夹下的其他文件了;尽管这个时候编辑器会有黄色波浪线;

    在这里插入图片描述

  2. 保持上图中的修改,我们再从temp.py执行程序,如下图所示,程序也是成功执行没有报错了:

    在这里插入图片描述

  3. 另外,这样做的好处是,我们将utils目录加入到了Python解释器去寻找包的路径集合中,之后在其他文件中导入utils目录下的文件时也变得很容易,如下图所示:

    1. CBOW.py文件中还需要导入negativeSamplingLayer.py文件,该文件也位于utils目录,自然可以和Embedding一样直接导入;
    2. 而在导入negativeSamplingLayer.py文件时,还需要将negativeSamplingLayer.py文件中要导入的包给导入进来,例如其中的SigmoidWithLoss.py文件;
    3. 由于SigmoidWithLoss.py文件也位于utils目录,导入方式就和前述几个一样

    在这里插入图片描述

  4. 综上,采用绝对路径的方法,可以兼顾两种运行方式,且在其他文件中导入相应目录下文件时也变得很方便了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3226887.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

react基础语法,模板语法,ui渲染,jsx,useState状态管理

创建一个react应用 这里使用create-react-app的脚手架构建项目(结构简洁,基于webpack-cli), npx create-react-app [项目名称] 使用其他脚手架构建项目可以参考:react框架,使用vite和nextjs构建react项目…

数学建模国赛入门指南

文章目录 认识数学建模及国赛认识数学建模什么是数学建模?数学建模比赛 国赛参赛规则、评奖原则如何评省、国奖评奖规则如何才能获奖 国赛赛题分类及选题技巧国赛赛题特点赛题分类 国赛历年题型及优秀论文数学建模分工技巧数模必备软件数模资料文献数据收集资料收集…

【7月长沙】2024年土木、水利与智能建造国际会议(CHEIC 2024)

在21世纪的今天,随着科技的迅猛发展,土木工程、水利工程与智能建造领域正迎来前所未有的变革。为了汇集全球范围内的智慧,推动这一领域的进步与发展,土木、水利工程与智能建造国际会议(CHEIC 2024)应运而生…

华为浏览器,Chrome的平替,插件无缝连接

文章目录 背景插件书签 背景 不知道各位小伙伴有没有这样的痛点,办公电脑、家里的电脑还有手机、平板等,收藏了一个网址或者在手机上浏览了某个网页,保存起来,可是一换平台或者换个电脑,在想要浏览之前收藏的东西&…

Selenium 中的 JUnit 注解

JUnit 是一个基于 Java 的开源框架,可帮助测试人员执行单元测试。JUnit 主要用于测试应用程序的每个单元或组件,例如类和方法。它有助于编写和运行可重复的自动化测试,以确保项目代码按预期运行。还可以使用 JUnit 执行 Selenium 自动化测试用…

E. Beautiful Array(cf954div3)

题意:给定一个数组,可以先对数组进行任意排序,每次操作可以选择一个ai,将它变成aik, 想让这个数组变成一个美丽数组(回文数组),求最少操作次数 分析: 先找出相同的数字…

Linux--深入理与解linux文件系统与日志文件分析

目录 一、文件与存储系统的 inode 与 block 1.1 硬盘存储 1.2 文件存取--block 1.3 文件存取--inode 1.4 文件名与 inode 号 ​编辑 1.5 查看 inode 号码方法 1.6 Linux 系统文件的三个主要的时间属性 1.7 硬盘分区结构 1.8 访问文件的简单了流程 1.9 inode 占用 1.…

从0-1搭建一个web项目(页面布局详解)详解

本章分析页面布局详解详解 ObJack-Admin一款基于 Vue3.3、TypeScript、Vite3、Pinia、Element-Plus 开源的后台管理框架。在一定程度上节省您的开发效率。另外本项目还封装了一些常用组件、hooks、指令、动态路由、按钮级别权限控制等功能。感兴趣的小伙伴可以访问源码点个赞 地…

资产几何?现代组织的外部攻击面

组织的外部攻击面情况如何?组织自己能完全掌握自己资产的情况吗? 工作来源 ASIA CCS 2024 工作背景 CISA 在 2022 年要求对政府的 IT 系统进行漏洞扫描,英国国家网络安全中心(NCSC)在 2022 年也计划扫描英国互联网…

智慧城市可视化页面怎么做?免费可视化工具可以帮你

智慧城市是一个综合性的概念,广泛应用于各个领域,如基础设施建设、信息化应用、产业经济发展、市民生活品质等。 可视化页面的制作也是一个综合性的过程,需要确定展示内容、数据收集与处理、设计可视化元素等多个环节紧密配合。 1. 明确展示…

无损音频格式 FLAC 转 MP3 音频图文教程

音频文件的格式多样,每种格式都有其独特的特点与适用场景。FLAC(Free Lossless Audio Codec),作为一种无损音频压缩格式,因其能够完美保留原始音频数据的每一个细节而备受音频发烧友和专业人士的青睐。 然而&#xff0…

Profibus_DP转ModbusTCP网关模块连马保与上位机通讯

Profibus转ModbusTCP网关模块(XD-ETHPB20)广泛应用于工业自动化领域。例如,可以将Profibus网络中的传感器数据转换为ModbusTCP协议,实现数据的实时监控和远程控制。本文介绍了如何利用Profibus转ModbusTCP网关(XD-ETHP…

AWS-WAF-Log S3存放,通过Athena查看

1.创建好waf-cdn 并且设置好规则和log存储方式为s3 2. Amazon Athena 服务 使用 (注意s3桶位置相同得区域) https://docs.aws.amazon.com/zh_cn/athena/latest/ug/waf-logs.html#waf-example-count-matched-ip-addresses 官方文档参考,建一个分区查询表…

pytorch实现水果2分类(蓝莓,苹果)

1.数据集的路径,结构 dataset.py 目的: 输入:没有输入,路径是写死了的。 输出:返回的是一个对象,里面有self.data。self.data是一个列表,里面是(图片路径.jpg,标签&…

02-图像基础-参数

在做有关图像和视频类的实际项目时,常常会涉及到图像的一些配置,下面对这些参数进行解释。 我们在电脑打开一张照片,可以看到一张完整的图像,比如一张360P的图片,其对应的像素点就是640*360,可以以左上角为…

python-25-零基础自学python-处理异常三兄弟try-except-else

学习内容:《python编程:从入门到实践》第二版第十章 知识点: 程序异常如何处理?try-except-else try-尝试可能引起错误的步骤 except-错误步骤发生,打印一些需要用户知道的信息,没有就pass else-错误不…

Java-常用API

1-Java API : 指的就是 JDK 中提供的各种功能的 Java类。 2-Scanner基本使用 Scanner: 一个简单的文本扫描程序,可以获取基本类型数据和字符串数据 构造方法: Scanner(InputStream source):创建 Scanner 对象 Sy…

【保姆级教程】CenterNet的目标检测、3D检测、关键点检测使用教程

一、代码下载 仓库地址:https://github.com/xingyizhou/CenterNet?tab=readme-ov-file 二、目标检测 2.1 下载预训练权重 下载预训练权重ctdet_coco_dla_2x.pth放到models文件夹下 下载链接:https://drive.google.com/file/d/18Q3fzzAsha_3Qid6mn4jcIFPeOGUaj1d/edit …

13--memcache与redis

前言:数据库读取速度较慢一直是无法解决的问题,大型网站应对的方式主要是使用缓存服务器来缓解这种情况,减少数据库访问次数,以提高动态Web等应用的速度、提高可扩展性。 1、简介 Memcached/redis是高性能的分布式内存缓存服务器…

按模版批量生成定制合同

提出问题 一个仪器设备采购公司,商品合同采购需要按模版生成的固定的文件,模板是固定的,只是每次需要替换信息,然后打印出来寄给客户。 传统方法 如果手工来做这个事情,准备好数据之后,需要从Excel表格中…