VScode中不同目录间python库函数的调用
作者:夜半罟霖 发布时间:2021-03-16 00:24:38
问题描述
vscode中跨目录的模块调用远不如pycharm中的来的简单,在pycharm中即使是不同库文件夹中子函数也可以进行互相调用。而在VScode中则需要我们手动向其中添加依赖路径。如下相同的文件结构,在pycharm中可以简单的在model_arc_pesudo
中导入model
中的模型,而在VScode中则会提示ModuleNotFoundError: No module named 'model'
,因此我们需要手动导入路径。
理论分析
首先我们从依赖路径角度来看看二者的异同,使用如下代码输出依赖路径:
import sys
print("import path!!!!!!")
print(sys.path)
pycharm中输出的依赖路径为:[xxx, ..., 'E:\\python_program\\infant_cognitive',..., xxx]
其中infant_cognitive
项目所在整个文件夹的名字,而vscode中输出的依赖路径则不包括这一项,也就无法自动的找到其子文件夹中model
,从而无法通过语句from model.PSDCNCluster_2 import PSDCN
。
解决方案
既然sys.path
未包含要导入的文件夹,那么直接导入就行,通过在代码最前方添加如下代码实现:
import sys
target_path="./"
sys.path.append(target_path)
print(sys.path)
此处有一个隐含的知识点,在vscode中默认的根路径是项目路径1,而非当前py
文件的路径,所以直接使用"./"
就可通过相对路径来导入infant_cognitive
下所有的文件夹。如果需要导入其他文件夹下的模块,只需要对target_path
进行修改即可,倘若对于相对路径的写法以及os, sys
模块的使用不够熟练,建议是直接使用绝对路径,不易出错。
还有一点值得注意的是,由于此处使用的导入方式是module.function(from model.PSDCNCluster_2 import PSDCN
),那么实际上我们需要导入的是module的上一级路径,也就是infant_cognitive
,而非导入infant_cognitive\model
,这样的话仍然会报错。如果是使用module.function形式导入的话,需要注意要导入的是module的上一级文件夹,不再是sys.append("module")
。或者是使用target_path="./model"
直接搭配from PSDCNCluster_2 import PSDCN
,具体可以去查阅python中的import机制2。
参考文献
vscode的相对路径 ↩︎
关于Python的import机制原理 ↩︎
来源:https://blog.csdn.net/Dr_maker/article/details/128521493
猜你喜欢
- 在Python 3.10发布之前,Python是没有类似于其他语言中switch语句的,要实现类似的功能最简单的方法就是通过if ... e
- 做开发中难免时间类型之间的转换, 最近就发现前端js和后端django经常要用到这个转换, 其中jsDate.now()精确到毫秒,而Pyt
- 本文实例为大家分享了一个简单的小游戏,分享给大家。利用随机函数制作石头剪刀布小游戏程序只运行一次import randoma = input
- 实例如下所示:# -*- coding: utf-8 -*-"""使用通配符,获取所有文件,或进行操作。&qu
- 本节介绍 Python 中的另一个常用模块 —— statistics模块,该模块提供了用于计算数字数据的数理统计量的函数。它包含了很多函数
- 防止用户通过后退按钮重复提交表单 <% response.Buffer=true response.Expires=0 respons
- 一个封装好的JavaScript拖动类,使用方便:<div id="idDrag" style="bor
- FileSystemObject、Folder 和 File 对象的一些方法都与通过 TextStream 对象创建、读取或写入文件有关。虽
- 全球数据量的疯狂增长,使得市场对资深数据库管理员的需求也节节攀升。据统计,一直到2016美国IT市场对数据库管理员的需求量增长都将会超过所有
- 先来了解一下收/发邮件有哪些协议:SMTP协议 SMTP(Simple Mail Transfer Protocol),即简单邮件传输协议。
- 使用步骤大致分为两步,就不多废话第一步、修改hosts文件将0.0.0.0 account.jetbrains.com添加到hosts文件最
- 这篇文章用来整理一下入门深度学习过程中接触到的四种激活函数,下面会从公式、代码以及图像三个方面介绍这几种激活函数,首先来明确一下是哪四种:S
- 本文实例为大家分享了python xlsxwriter创建excel图表的具体代码,供大家参考,具体内容如#coding=utf-8 imp
- 自学Django已经有一周啦,想把自己自学过程中的每一步都记录下来,给一些零基自学Django的战友们一些参考;本次主要内容为,用一个实例展
- 我有一个2D(二维) NumPy数组,并希望用255.0替换大于或等于阈值T的所有值。据我所知,最基础的方法是:shape = arr.sh
- 在 Python 整型对象所存储的位置是不同的, 有一些是一直存储在某个存储里面, 而其它的, 则在使用时开辟出空间.说这句话的理由, 可以
- 如果用到数据筛选功能,可以使用x if condition else y的逻辑实现。如果使用的是纯Python,可以使用不断迭代的方式对每一
- 缓存是指可以进行高速数据交换的存储器,它先于内存与CPU交换数据,因此速度很快。缓存就是把一些数据暂时存放于某些地方,可能是内存,也有可能硬
- 序言:刚结束公司的三个月试用期,意味着我即将正式步入社会成为广大从事IT行业的一员。作为一个编程小白,无论从技术层面还是知识层面都是比较薄弱
- 然后给脚本文件运行权限,方法(1)chmod +x ./*.py方法(2)chmod 755 ./*.py (777也无所谓啦)这个命令不去