vscode python包的引用一些问题

【小工具】如何在 VsCode 下“自由”地运行 Python 脚本和模块 1. 需求 我知道。VsCode 是自带运行 Python 的方法的,也就是按下 F5,即可进入调试运行。如果不喜欢这一款式,也可以自己下载一个 Code Runner 插件一键运行。 但是我有特别的需求: 可以自由切换 Conda 环境运行 可以作为独立的外部进程运行 可以不依赖于工程 launch.json 的配置 一条一条地说。 自由切换Conda环境运行 比如在某一个工程目录下,有两个文件:main_tf.py 和 main_torch.py。这两个脚本对应的环境是不太一样的。我希望可以自由切换 阅读详情

个人使用vscode碰到的一些python包的引用问题以及尝试解决的一些办法,可能只适用我自己的情况,项目目录大概如下:lib是根目录下的一个文件夹,里面每个文件夹都是一个python 包,都有__init__.py,但是在引用包的时候出现一些找不到包的问题

.
├── other_dir
├── lib
├── ...

lib
├── packageA
├── packageB
├── test.py


packageA
├── __init__.py
├── test.py
└── demo.py

首先,在lib目录下的test.py 使用 import packageA.test 等引入包都是可以的,在两个test.py 中添加如下语句

print('__file__={0:<35} | __name__={1:<20} | __package__={2:<20}'.format(__file__,__name__,str(__package__)))

会得到如下输出语句

__file__=test.py                             | __name__=__main__             | __package__=None                
__file__=/project_root/lib/packageA/test.py | __name__=packageA.test           | __package__=packageA 

可以看到,lib下的test.py被当作程序的入口,而包目录下的test被当作包的模块,这些是没有问题的

主要问题出在,如果在packageA的test.py 中import了packageB或者同目录下的demo ,如果方式不对可能会报找不到包的错误

假设现在packageA的test.py有如下语句

import demo
import packageB.demo

1.现在去执行lib下的test.py 会报demo找不到的错,原因是在这种情况下,python 会将import后面的当作包名来处理,而整个project中不存在名为demo的package,而只有路径为“demo.py"的同目录下的模块。

2、当你切到packageA目录下执行test.py ,此时demo的应用不会报错,而packageB.demo 的引用会报错,因为此时python 是以packageA目录去找的,因为同目录下存在相对路径为”demo.py"的包,所以import demo 没有报错,而packageA里面没有 packageB 这个包,因为packageB在packageA的外面,所以找不到

两个导入一个是按模块,一个是按路径

解决方法:

一、如果只是在lib目录,也就是包外面的目录下能够运行,可以简单的把所有的形如 import demo 这样的同目录下的模块前面加上 .  ,即

import .demo
import packageB.demo

这样. 实际上就会被解析成packageA,也就是包名,就不是按路径而是按照包名来进行查找包了,但是这种方法适用于你在包的外面去调用所有的包,如果你想切换到包里面还是会报错,这次的错误是 相对包名的错误,就是加的这个 . 导致的

二、如果你既想在包外面运行,在某个包内又能够单独运行,可以在 packageA的test.py 中参考如下写法

import sys
sys.path.append('..')
import packageA.demo
import packageB.demo

sys.path.append('..') 实际上把 lib这个目录添加到了当前查找包的路径中,这个路径取决于你的实际结构,你可以用绝对路径或相对路径,但是相对路径要注意哪个是根目录,sys.path.append('lib')会报错,应为lib 不是packageA里面的文件,".."实际上就是test.py 所在目录(packageA)的上级目录(lib)

使用这种写法,在lib,内外都是可以运行的,添加路径实际上就是告诉python 去哪个路径下面找模块

PS:如果想让某个文件以某个包模块方式运行而不是作为主程序的入口,可以试一下在lib 目录下运行

python -m packageA.test

 

【VSCode】VSCode使用conda环境时找不到python包/找不到Module VSCode 使用conda环境时Python找不到Module。 不是那个没选环境的简单问题,是可能你不知道的错误。 阅读详情

相关推荐

STM32F103C8T6板子使用说明

pcb版,把众多元器件集中到一个板子上面管理。

LYC_462857656的博客 2180

使用vscode添加自定义Python模块

      在vscode里新建一个深度学习项目,新建一个文件夹用来写公共模块,结构如下。 tools #文件夹 __init__.py DataHandler.py AlexNet #文件夹 trainAlex.py _init_.py文件内容 from .DataHandler import DataHandler trainAlex.py文件引用 在该文件中可以使用from tools import DataHand

贱贱的剑 9435

几率大的Redis面试题(含答案)

本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制【~】 Redis 为什么是单线程的,优点 如何解决redis的并发竞争key问题 Red...

睶 38万+

在VScode中引用自定义模块问题

1. Python中lib、package和module的关系 module:以.py为结尾的文件都是模块。 package:就是一个带__init__.py的文件夹**(必须有!!!)**和其他一些.py文件组成,其中__init__.py可以是空文件,也可以含有Python代码。 lib:在Python中,具有某些功能的模块和包都可以被称作库,库中可以包含包、模块和函数。 2.引用自定义模块 2.0文档结构 2.1 test1包中module1模块 class T1(object): def

行者的博客 1898

FPGA工程师必看:JESD204B同步机制实战指南(含SYSREF信号调试技巧)

本文为FPGA工程师提供了一份JESD204B同步机制的实战指南,重点聚焦于SYSREF信号的调试技巧。文章从同步的核心逻辑出发,深入剖析了时钟、SYSREF与对齐序列这“三驾马车”的协作,并详细阐述了硬件PCB布局、FPGA IP核配置、状态机监控以及使用示波器进行波形分析等关键实战步骤,旨在帮助工程师解决多通道高速系统中的同步难题,确保链路的稳定与确定性延迟。

weixin_29239661的博客 330

从零开始 使用OMNET++结合VEINS,INET和SUMO的联合仿真

搭建仿真的环境,导入VEINS和INET开源库,使用INET库中提供的网络协议和功能模型来模拟通信协议和网络功能,使用SUMO创建道路网络和车辆轨迹,并导出到OMNeT++中 在OMNeT++中使用VEINS通过socket和SUMO连接,借助VEINS实现的TRACI接口来设置车辆相关的行为和场景,最后在OMNET++中结合VEINS,SUMO和INET运行联合仿真实验,并分析车辆在遇到紧急情况下的通信状况和具体行为

mjmmm的博客 1万+

python 多层结构目录之间包的引用问题

python 多层结构目录之间包的引用问题

zhaoguanhua的博客 1万+

【胡学长 带你学 Global Mapper 】如何将影像地图转换为国家2000坐标系

多部门联合开展工作坐标数据不匹配怎么办?Hi,我是胡学长!今天教大家如何利用Global Mapper将谷歌影像数据转换为国家2000坐标系影像数据 。

一起来交流学习吧 1万+

python对包的定义(__init__.py文件的用法!)为什么from导入总是提示红色(根源在哪里?)

通常来说,在开发python过程中 __init__.py文件往往容易忽视,结果导致一些不必要的麻烦!!(vscode建议使用项目文件夹做当前工作目录,这样__init__.py省略也不影响包路径导入)   查看python官方的文档,上面提到这样一段话:__init__.py文件是必需的,这样才能使Python将目录当作包;这样做的目的是为了防止将具有共同名字的目录,不小心暴露到模块搜索路径...

weixin_43343144的博客 2532

驱动兼容_FANUC 驱动器兼容问题探讨

近10年来,FANUC伺服驱动器随着系统的升级而升级,不同的系统,可以兼容很多种类的驱动器,作者做了一些常见经验总结如下表:电源模块伺服放大器主轴放大器bi一体18i/OIB/OIC6110-Hxxx6114-Hxxx6111-Hxxx6134-Hxxx31iA/OID6140-Hxxx6117-Hxxx6141-Hxxx6164-Hxxx31IB/35IB/OIF/OI MATE D(5包)62...

weixin_34420941的博客 1751

别再死记硬背菜单了!用Workbench搞定你的第一个ANSYS结构分析(附模型文件)

本文为零基础用户提供使用ANSYS Workbench完成第一个结构分析的完整指南。通过悬臂梁案例详细讲解从几何导入、材料定义、网格划分到边界条件设置的全流程,帮助初学者快速掌握有限元分析的基本操作,并附赠实用模型文件。

weixin_34233974的博客 306

python引用库的几种写法_vscode Python包引用中的几个问题,vscodepython,一些

个人使用vscode碰到的一些python包的引用问题以及尝试解决的一些办法,可能只适用我自己的情况,项目目录大概如下:lib是根目录下的一个文件夹,里面每个文件夹都是一个python 包,都有__init__.py,但是在引用包的时候出现一些找不到包的问题.├── other_dir├── lib├── ...lib├── packageA├── packageB├── test.pypacka...

weixin_42126399的博客 709

【开源】STM32+ESP8266+MQTT多传感器数据上云OneNET(易拓展,带操作系统FreeRTOS)

【开源】STM32+ESP8266+MQTT多传感器数据上云OneNET(易拓展) 文章目录【开源】STM32+ESP8266+MQTT多传感器数据上云OneNET(易拓展)1. 相关连接1.1 本项目相关连接1.2 无操作系统简易版(旧版,有OneNET云平台设备创建和应用配置,本文不再赘述):2. 具体功能3. 硬件环境4. 云平台环境配置5. 接线6. 功能展示6.1 数据流6.2 APP应用管理6.3 串口数据7. 源码详解7.1 源码文件解析7.2 服务器与wifi配置相关7.3 源码框架7.4

ssssadw的博客 2万+

vscode环境 python import导入自定义包问题

vscode环境 python import导入自定义包问题 解决方案: 打开Python 的安装路径下 \Lib\site-packages 创建pythonwork.pth pythonwork.pth 写入项目文件地址 (如:E:\xx\xx\xx)

will_net的博客 1946

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

python中import包报错解决方法

导入包报错的解决方法 参考链接 首先,知道一下几个概念: 项目:就是整个大文件夹,项目 包:下一级文件夹,不过包都要有__init__.py,这样才是一个包 模块:模块就是.py文件 ├─project │ │ test2.py │ │ test3.py │ │ │ ├─package │ │ __init__.py │ │ test1.py │ │ test4.py │ │ │ └─package2 │ __init

a264672的博客 1万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

vscode python cv2没提示

opencv-python cv2没有提示

qq_43553197的博客 627

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

VSCODE开发ROS小记-rospy_python自定义msgs语法高亮,查找

在编写rospy代码时,如果引用了其他package定义的msgs(srv),虽然程序运行不会出错,但是写代码过程中vscode无法识别自定义msgs对应的变量。

instinct_wsk的博客 270

VSCODE python无法引入自定义的包

自学python时遇到一个很诡异的问题,工程结构如下: 每次一运行C5文件,就报错ModuleNotFoundError: No module named 'study' 但是直接import c4的话就没问题 思索了一下,应该是包的引用路径存在问题,有两个方法可以解决 1.在代码中加入 importsys,os BASE_DIR=os.path.dirname(os.pa...

apacheuk的博客 1万+

Anaconda 和 VSCode 配置Python编程环境教程

原文地址:https://www.jianshu.com/p/ef1ae10ba950 参考资料 VSCode配置Python教程:https://blog.youkuaiyun.com/Zhangguohao666/article/details/105040139 vscode配置anaconda3的方法:https://www.jb51.net/article/192890.htm Anaconda + VSCode 最详细教程 作者:效率视界 写在前面 为了录制这篇教程,我又把电脑上的 Python

acktomas的博客 7万+

【VScode】如何在VSCode中配置Python开发环境:从零开始的完整指南

在当今的编程世界中,选择一个合适的集成开发环境(IDE)至关重要。Visual Studio Code(VSCode)凭借其开源、跨平台、模块化、插件丰富等特点,成为了众多开发者的首选。作为微软的“私生子”,VSCode不仅启动迅速、界面美观,而且可高度定制,极大地提升了开发效率。尤其是在Python开发中,VSCode的表现更是令人惊艳。今天,我们将深入探讨如何在VSCode中配置Python开发环境,让你轻松上手Python编程之旅!🐍。

万物皆有灵 9万+

关于在vscode引入python中Crypto包的问题

python导包,crypto

西电卢本伟的博客 6890

【Python】VSCode 中导入Python 自定义不同目录同名包问题

目录 1. 问题 2. 需求 3. 解决 4. 遗留问题 5. 参考 1. 问题 最近在写Python 代码的过程中,按照Java 大法的习惯,不同的业务写到不同的软件包目录中,然后在IDE 中设置要加载的目录路径,然后在待导入的软件包中引入即可;但是到了Python 中,这种写法我嚓嘞,不行; 找了找资料,然后简单写写; Python 中是怎么解决,多路径下同包名引...

DovSnier 专栏 2515

python找不到包_VsCode调试Python遇到导包问题,可能和virtualenv和Anaconda有关

anconda和virtualenv都是用来管理python的,两者的区别在这里不多说,本文主要说一下vsocde和他们之间的问题问题描述 当初次使用vscode配置python运行环境时,都是正常的,本机为Mac系统,自带python2.7环境,所以在vscode中写个"Hello World"是正常的,当我使用anconda创建python环境时,发生了问题。比如我在创建的python3.7...

weixin_39639568的博客 3501

【工具】VScode|Windows/Linux下 VScode 调试 Python 项目、模块、包的方法

分享一些平时调试 python 的操作,避免大家被网上乱七八糟的教程坑了。

shandianchengzi的博客 7185

【详细图文】在VScode中配置python开发环境

在VScode中配置python开发环境

qq_62844901的博客 1万+

Vscode运行Python无法导入自己编写的包的解决方法

在Vscode编辑器中,我经常用于编写Python代码,这一过程中,无论是导入第三方包还是Python内置的包,都未曾遇到过任何问题。然而,当我尝试导入一个跨文件自定义的包时,却遭遇了导入异常的问题。这一经历促使我撰写本文,希望通过分享解决这一问题的方法,帮助遇到类似问题的开发者。以及我觉得“包”这个称呼,不太贴切我们日常使用操作系统的习惯,因此后面我都会称呼为“文件夹”

m0_73366745的博客 4130
上一篇: VSCode python调试库代码以及添加相关扩展支持opencv
hacker_G
博客等级 码龄9年 75粉丝 60原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值