VScode中不同目录间python库函数如何调用
本文小编为大家详细介绍“VScode中不同目录间python库函数如何调用”,内容详细,步骤清晰,细节处理妥当,希望这篇“VScode中不同目录间python库函数如何调用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
问题描述
vscode中跨目录的模块调用远不如pycharm中的来的简单,在pycharm中即使是不同库文件夹中子函数也可以进行互相调用。而在VScode中则需要我们手动向其中添加依赖路径。如下相同的文件结构,在pycharm中可以简单的在model_arc_pesudo
中导入model
中的模型,而在VScode中则会提示ModuleNotFoundError: No module named 'model'
,因此我们需要手动导入路径。
理论分析
首先我们从依赖路径角度来看看二者的异同,使用如下代码输出依赖路径:
import sysprint("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 systarget_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库函数如何调用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341