首页
书签
论坛
网盘
邮件
壁纸
影视
在线音乐
更多
直播
统计
个人微博
云笔记
云存储
图片视频
友链
留言
关于
Search
1
文档内容搜索哪家强? 15款文件搜索软件横向评测
13 阅读
2
常见系统部署(1)
11 阅读
3
makfile 知识汇总
10 阅读
4
Verilog-AMS Verilog-A介绍
7 阅读
5
欢迎使用 Typecho
5 阅读
默认分类
数字电路
芯片后端
模拟电路
芯片验证
原型验证
算法与架构
DFX与量产
windows设置
Linux设置
MacOS设置
移动OS设置
软件方案
登录
Search
标签搜索
python
PyQT
systemverilog
Alist
Docker
cadence
sv
webdav
vscode
cpp
upf
ESL
TLM
浏览器
virtuoso
tsmc8rf
TSMC
CXL
PCIE
Yosys
bennyhe
累计撰写
46
篇文章
累计收到
8
条评论
首页
栏目
默认分类
数字电路
芯片后端
模拟电路
芯片验证
原型验证
算法与架构
DFX与量产
windows设置
Linux设置
MacOS设置
移动OS设置
软件方案
页面
书签
论坛
网盘
邮件
壁纸
影视
在线音乐
直播
统计
个人微博
云笔记
云存储
图片视频
友链
留言
关于
搜索到
46
篇与
的结果
2025-06-08
统信UOS安装node, npm,vue
(1)查看自己的系统uname -a2)进入nodejs官网下载相应版本(3)找个位置解压,然后复制文件目录保存好地址,等下要用到(4)编辑环境变量sudo vim /etc/profileAI写代码shell按下“i”键 进入编辑模式,在文末添加export NODE_HOME=步骤三刚刚复制的地址(去掉file://)export PATH=$PATH:$NODE_HOME/bin按ESC,然后输入:wq 即可,完成文件保存并退出,(5)环境变量生效,在终端输入以下指令即可source /etc/profile /etc/bash.bashrcAI写代码shell\(6)验证node和npmnode -v npm -v(7)创建node和npm链接sudo ln -s 【原地址】 【链接地址】(8)npm 安装vuenpm install --global vue-cliAI写代码shell(9)创建vue链接,同第7步(10)最终验证node -vnpm -vvue --versionAI写代码shell以上正确输出即完成安装(11)创建Vue项目vue create 【vue-project】(自定义name)
2025年06月08日
3 阅读
0 评论
0 点赞
2025-06-06
SystemVerilog和SystemC协同验证环境介绍(2)
1、下载 uvmc (uvm connect)https://download.csdn.net/download/yp18792574062/88529417?spm=1001.2014.3001.55012、配置相关环境变量export UVM_HOME=${VCS_HOME}/etc/uvm export UVMC_HOME=/home/yangpan/yangpan/uvmc/uvmc-2.3.1然后执行 source ~/.zshrc 更新3、编译 uvmc 自带的例子编译之前需要更新 gcc 的版本,这里将 gcc 版本降低到 5.2.0,因为 vcs2018 只支持少数几个 gcc 版本,降低 gcc 的版本可以参考之前的文章cd examples/converters ln -sf Makefile.vcs Makefile make comp EXAMPLE=sv2sc ./simv make comp EXAMPLE=sc2sv ./simv4、自己动手写一个 sc 到 sv 再到 sc 的例子因为对 system verilog 不熟悉,所以这里 sv 在接收到数据后就立马发送给 sc,实现一个数据的回传效果MakefileSYSCAN = syscan -cpp g++ -cc gcc -tlm2 \ -cflags -g \ -cflags -DVCS \ -cflags -std=c++11 \ -cflags -I${VCS_HOME}/etc/systemc/tlm/include/tlm/tlm_utils \ -cflags -I${UVMC_HOME}/src/connect/sc \ -cflags -I${UVMC_HOME}/src \ -cflags -Icpp \ ${UVMC_HOME}/src/connect/sc/uvmc.cpp VLOGAN = vlogan -q -sverilog \ +incdir+${UVM_HOME}/src ${UVM_HOME}/src/uvm_pkg.sv \ +incdir+${UVMC_HOME}/src/connect/sv ${UVMC_HOME}/src/connect/sv/uvmc_pkg.sv \ -timescale=1ns/1ps VCS_ELAB = vcs -q -sysc=deltasync -lca \ -sysc -cpp g++ -cc gcc \ -timescale=1ns/1ps \ -CFLAGS -DVCS ${UVM_HOME}/src/dpi/uvm_dpi.cc CURRENT_DIR = $(shell pwd) CPP_DIR = $(shell find $(CURRENT_DIR)/cpp -maxdepth 20 -type d) SRCS_CPP += $(foreach dir, $(CPP_DIR), $(wildcard $(dir)/*.cpp)) SRCS_CC += $(foreach dir, $(CPP_DIR), $(wildcard $(dir)/*.cc)) SRCS_C += $(foreach dir, $(CPP_DIR), $(wildcard $(dir)/*.c)) SV_DIR = $(shell find $(CURRENT_DIR)/sv -maxdepth 20 -type d) SRCS_SV += $(foreach dir, $(SV_DIR), $(wildcard $(dir)/*.sv)) comp: $(SYSCAN) -full64 $(SRCS_CPP) $(SRCS_CC) $(SRCS_C) $(VLOGAN) -full64 $(SRCS_SV) +define+UVM_OBJECT_MUST_HAVE_CONSTRUCTOR $(VCS_ELAB) -full64 sv_main sc_main # 这里要写 verilog、sv、sc 对外的模块名字 clean: rm -rf simv* work csrc ucli.key vc_hdrs.h vcs.log AN* *.log *.log.cmp *.vpd DVE* .vlogan* run: ./simvSystemc 发送模块// sender.h #pragma once #include "systemc.h" #include <string> #include <iomanip> #include "uvmc.h" using namespace uvmc; #include <tlm.h> using namespace sc_core; using namespace tlm; #include "simple_initiator_socket.h" using tlm_utils::simple_initiator_socket; class producer : public sc_module { public: SC_HAS_PROCESS(producer); producer(sc_module_name ins_name); virtual ~producer(); void run(); public: simple_initiator_socket<producer> out; tlm_analysis_port<tlm_generic_payload> ap; sc_event done; }; class Sender : public producer { public: SC_HAS_PROCESS(Sender); Sender(sc_module_name instname); ~Sender(); void SendData(); };// sender.cpp #include "sender.h" #include <string> producer::producer(sc_module_name ins_name) : sc_module(ins_name), out("out"), ap("ap") { SC_THREAD(run); } producer::~producer() = default; void producer::run() { for (int i = 0; i < 10; ++i) { std::string data = "xxxxx: " + std::to_string(i); tlm_generic_payload gp; gp.set_data_ptr((uint8_t*)data.c_str()); gp.set_command(TLM_WRITE_COMMAND); gp.set_address(rand()); sc_time delay = sc_time(10, SC_NS); gp.set_data_length(data.length()); out->b_transport(gp, delay); ap.write(gp); wait(20, SC_NS); } done.notify(); } Sender::Sender(sc_module_name instname) : producer(instname) { SC_THREAD(SendData); } Sender::~Sender() = default; void Sender::SendData() { uvmc_raise_objection("run"); wait(done); uvmc_drop_objection("run"); }SystemC 接收模块// receiver.h #pragma once #include <string> #include <iomanip> #include <systemc.h> #include <tlm.h> using namespace tlm; #include "simple_target_socket.h" using tlm_utils::simple_target_socket; class Receiver : public sc_module { public: SC_HAS_PROCESS(Receiver); Receiver(sc_module_name ins_name); ~Receiver(); virtual void b_transport(tlm_generic_payload &gp, sc_time &t); public: simple_target_socket<Receiver> in; tlm_analysis_port<tlm_generic_payload> ap; }; // receiver.cpp #include "receiver.h" Receiver::Receiver(sc_module_name ins_name) : sc_module(ins_name), in("in"), ap("ap") { in.register_b_transport(this, &Receiver::b_transport); } Receiver::~Receiver() = default; void Receiver::b_transport(tlm_generic_payload &gp, sc_time &t) { unsigned char* data = gp.get_data_ptr(); int len = gp.get_data_length(); std::cout << "receive data: " << (char*)data << std::endl; ap.write(gp); }sc_main// main.cpp #include <systemc.h> #include "receiver.h" #include "sender.h" int sc_main(int argc, char* argv[]) { Sender sender("sender"); uvmc_connect(sender.out, "42"); Receiver receiver("receiver"); uvmc_connect(receiver.in, "foo"); sc_start(1000, SC_NS); return 0; }System Verilog 数据回传模块// sv_loop.sv import uvm_pkg::*; import uvmc_pkg::*; `include "uvm_macros.svh" class producer extends uvm_component; uvm_tlm_b_initiator_socket #() out; uvm_analysis_port #(uvm_tlm_gp) ap; uvm_phase run_ph; `uvm_component_utils(producer) function new(string name, uvm_component parent=null); super.new(name,parent); out = new("out", this); ap = new("ap", this); run_ph = uvm_run_phase::get(); endfunction task send(uvm_tlm_gp t, uvm_tlm_time delay); run_ph.raise_objection(this); out.b_transport(t, delay); ap.write(t); run_ph.drop_objection(this); /* uvm_tlm_gp gp = new; uvm_tlm_time delay = new("del",1e-12); run_ph.raise_objection(this); delay.set_abstime(10,1e-9); assert(gp.randomize() with { gp.m_byte_enable_length == 0; gp.m_length inside {[1:8]}; gp.m_data.size() == m_length; } ); `uvm_info("PRODUCER/PKT/SEND",{"\n",gp.sprint()},UVM_MEDIUM) out.b_transport(gp,delay); ap.write(gp); #100; `uvm_info("PRODUCER/END_TEST", "Dropping objection to ending the test",UVM_LOW) run_ph.drop_objection(this); */ endtask endclass class consumer extends uvm_component; uvm_tlm_b_target_socket #(consumer) in; uvm_analysis_port #(uvm_tlm_generic_payload) ap; producer prod; `uvm_component_utils(consumer) function new(string name, uvm_component parent=null); super.new(name,parent); in = new("in", this); ap = new("ap", this); prod = new("prod"); uvmc_tlm #()::connect(prod.out, "foo"); endfunction virtual task b_transport(uvm_tlm_gp t, uvm_tlm_time delay); // `uvm_info("CONSUMER/PKT/RECV",{"\n",t.sprint()},UVM_MEDIUM) // #(delay.get_realtime(1ns,1e-9)); // delay.reset(); // ap.write(t); // uvm_phase phase; prod.send(t, delay); endtask endclass module sv_main; consumer cons = new("cons"); // producer prod = new("prod"); initial begin uvmc_tlm #()::connect(cons.in, "42"); // uvmc_tlm #()::connect(prod.out, "foo"); run_test(); end endmodule5、编译运行make comp./simv注意如果编译在 uvmc_connect.cpp 263 行报错,提示错误如下那么需要将对应行代码修改为cerr << "UVMC Error: Cannot open connections file '" << filename << "'" << endl;打印输出6、关键点Systemc 和 System Verilog 的通信接口有点类似于 c++ 里面的 socket 通信一样,如果要通信,那么需要绑定到相同的一个端口上,这里的端口是一个字符串// systemc Sender sender("sender"); uvmc_connect(sender.out, "42"); Receiver receiver("receiver"); uvmc_connect(receiver.in, "foo");// system verilog consumer cons = new("cons"); uvmc_tlm #()::connect(cons.in, "42"); prod = new("prod"); uvmc_tlm #()::connect(prod.out, "foo");对于 sv 接收,需要重写 b_transport 方法,并且需要定义输入 socket 接口uvm_tlm_b_target_socket #(consumer) in; uvm_analysis_port #(uvm_tlm_generic_payload) ap; virtual task b_transport(uvm_tlm_gp t, uvm_tlm_time delay); endtask 对于 sv 发送,需要定义输出 socket 接口,并且调用 b_transport 进行发送 uvm_tlm_b_initiator_socket #() out; uvm_analysis_port #(uvm_tlm_gp) ap; run_ph.raise_objection(this); out.b_transport(t, delay); ap.write(t); run_ph.drop_objection(this);对于 sc 的接收端,需要定义输入 socket 接口,然后重写了 b_transport 方法接收数据simple_target_socket<Receiver> in; tlm_analysis_port<tlm_generic_payload> ap;对于 sc 的发送端,需要定义输出 socket 接口,然后调用 b_transport 发送simple_initiator_socket<producer> out; tlm_analysis_port<tlm_generic_payload> ap;附录: sc_module 在 verilog 中例化调用vcs 编译运行过程(1)先编译systemcsyscan -full64 -sysc=dpi_if -cpp g++ -l syscan.log -tlm2 -cflags -DVCS ${C_SRC} -cflags "${C_DEFINE} ${INCLUDE_PATH}" $(pwd)/Components/TOP.cpp:TOP 其中C_SRC 在makefile 中定义:C_SRC=$(shell find ./ -path "./csrc" -prune -o -path "./TEST" -prune -o -path "./Thirdparty" -prune -o -name '*TOP.cpp' -o -name 'main.cpp' -o -name '*.cpp' -print -o -name '*.c' -print -o -name '*.cc' -print | sed "s|^\.|$(pwd)|")C_SRC+=${VIP_ROOT_PATH}/3pt_utils/uvmc/src/connect/sc/uvmc.cppINCLUDE_PATH += -I$(VCS_HOME)/etc/systemc/accellera_install/systemc233-gcc7/include/tlm_utils(2)ln 到systemverilog 编译路径再编译systemverilog/verilogln -sTf ../../systemc/atomsimulator-main/csrc/sysc csrc/syscvcs $$XRUN_SYSC_FLIST $(COMP_OPTS) $(COMP_DEF) -f $(TBFILE) 2>&1 | tee cur_cmp.log 其中 XRUN_SYSC_FLIST="$(XRUN_SYSC_FLIST) -f ../systemc/atomsimulator-main/xrun.f"; \最后运行和一般只有systemverilog/verilog 没有区别./simv ${GUI} $(RUN_OPTS) $$COV_OPTS -l ./log/$(tc)_$$seed.log -ucli -do ../cfg/vcs_ucli.cfg \ +ntb_random_seed=$$seed +UVM_TESTNAME=$(tc) +WAVE_PATH=$(wave_path) +WAVE_MACRO=WAVE_$(wave_macro) +UVM_VERBOSITY=$(printlevel) $$VCS_FSDB_OPT $(FSDB_DBG_OTPS)附录: sc_module 在 verilog 中例化调用xrun 编译运行过程(1)生成文件列表,systemc可以和systemverilog 一起编译echo "-DSC_INCLUDE_DYNAMIC_PROCESSES -DXRUN -Wcxx,"${C_DEFINE}" ${INCLUDE_PATH} ${C_SRC} $(pwd)/Components/TOP.cpp $(pwd)/Components/TOP.v" | sed "s/ /\n/g" > xrun.ftlm 库路径:INCLUDE_PATH += -I$(XCELIUM_HOME)/tools/systemc/include/tlm_utils生成的文件列表 xrun.f 内容xrun 编译:xrun $$XRUN_SYSC_FLIST $(COMP_OPTS) $(COMP_DEF) -f $(TBFILE) 2>&1 | tee cur_cmp.log 其中:XRUN_SYSC_FLIST="$(XRUN_SYSC_FLIST) -f ../systemc/atomsimulator-main/xrun.f"; \运行和一般只有systemverilog/verilog 没有区别 xrun -R ${GUI} $(RUN_OPTS) $$COV_OPTS -l ./log/$(tc)_$$seed.log -input ../cfg/xrun_ucli.cfg \ -seed $$seed +ntb_random_seed=$$seed +WAVE_PATH=$(wave_path) +UVM_TESTNAME=$(tc) +WAVE_MACRO=WAVE_$(wave_macro) +UVM_VERBOSITY=$(printlevel) $(FSDB_DBG_OTPS); \附录: verilog module在sc 中例化调用,vcs 编译过程(顶层为sc)先编译verilog moudle 为 sc (就是转换为sc)vlogan -sysc -sc_model adder -sc_portmap the.map adder.v ${VLOGAN_EXTRA_SC} vlogan -sysc -sc_model multiplier -sc_portmap the.map multiplier.v ${VLOGAN_EXTRA_SC} 备注:VLOGAN_EXTRA_SC 可以为空然后再运行 syscsim -sysc -timescale=1ps/1ps -debug_access+all stimulus.cpp display.cpp subtracter.cpp top.cpp main.cpp -l comp.log ${SYSCAN_EXTRA} 如果verilog/systemverilog 和 sc 互相嵌套,可以在sc 调用verilog/systemverilog 中,将 verilog/systemverilog编译为sc,然后顶层如果verilog/systemverilog, 参考sc_module 在 verilog 中例化调用vcs 编译运行过程例子,编译后再运行。最后生成的fsdb 波形 可以显示systemc 时序描述这里u_TOP 就是systemc 顶层在verilog 中例化verdi 还不能直接debug systemc 源码,还需要研究————————————————部分来源于https://blog.csdn.net/yp18792574062/article/details/134375631
2025年06月06日
5 阅读
0 评论
0 点赞
2025-06-06
SystemVerilog和SystemC协同验证环境介绍(1)
先说结论:使用有公开源代码的uvmc,可以在不同仿真工具之间自由切换,vcs 也有自己的库但是只能在vcs 中使用,不能在xrun 和 子门子的EDA 仿真工具中使用。下图是一个典型的sv和sc协同验证环境的testbench。systemverilog大家都比较熟悉了,UVM就是基于sv创建的一个验证方法学的库。但是systemc用的就比较少。一般情况下,systemc用于:事务级别建模和验证HW / SW协同设计SOC架构分析和优化sv和sc协同验证环境,主要应用于:使用SystemC TL模型作为SystemVerilog测试平台中的参考模型(可重用)通过常用的SV测试平台确保RTL和SystemC TL模型的一致性SC和SV具有互操作性SC模块可以实例化SV,反之亦然具有混合语言组件的单模块层次结构SC和SV调度程序需要统一的语义混合语言系统应该像使用单一语言一样工作 引脚级:SC信号可以绑定到SV端口,反之亦然支持标准转化集使用简单,但很少能匹配设计流程要求TL:SC调用SV任务/函数,SV调用SC方法符合大多数设计流程要求更高的仿真和建模效率那么怎么将SV和SC两种不同的语言连接起来呢?大家都知道dpi可以作为c和sv之间互相访问的桥梁,那么它作为SV和SC之间的桥梁够用吗?当然不够。DPI只能调用非阻塞方法/任务/函数,但是不能调用耗时的任务/方法。仅指定C接口,而不能指定C ++,而不能指定SystemCDPI不能用于遍历SystemC层次结构,处理实例或对象不容易实现DPI构建为与单线程非时序的C程序的接口Mentor也开源了UVM Connect的库。UVM Connect是一个基于开源UVM的库,提供TLM1和TLM2连接以及SystemC和SystemVerilog UVM模型和组件之间的对象传递。它还提供了一个UVM Command API,用于从SystemC(或C或C ++)访问和控制UVM仿真。 UVM Connect允许您在UVM验证中重用SystemC架构模型作为参考模型和/或重用SystemVerilog UVM代理来验证SystemC中的模型。它还有效地扩展了您的VIP产品组合,因为您现在可以使用两种语言访问VIP。通过UVM Connect,您可以轻松开发集成的验证环境,从而充分利用每种语言的优势,最大限度地提高验证效率。UVM版本2.3增加了新的“快速打包程序”功能,可在通过TLM2连接传递通用有效负载时提高性能。它们还增加了对无限数据有效负载的支持以及对配置扩展的有限支持。附录:SV和SC语言之间的数据类型映射原文链接:https://blog.csdn.net/zhajio/article/details/81780576
2025年06月06日
2 阅读
0 评论
0 点赞
2025-06-06
Python中 if __name__==详细解析
引言学过Java、C、C++的程序员应该都知道,每次开启一个程序,都必须写一个主函数作为程序的入口,也就是我们常说的main函数。如下所示, main()就是Java中的一个main函数。public class HelloWorld { public static void main(String[] args) { System.out.println("HelloWorld"); } }与Java、C、C++等几种语言不同的是,Python是一种解释型脚本语言,在执行之前不同要将所有代码先编译成中间代码,Python程序运行时是从模块顶行开始,逐行进行翻译执行,所以,最顶层(没有被缩进)的代码都会被执行,所以Python中并不需要一个统一的main()作为程序的入口。在某种意义上讲,“if __name__==’__main__:”也像是一个标志,象征着Java等语言中的程序主入口,告诉其他程序员,代码入口在此——这是“if __name__==’__main__:”这条代码的意义之一。__name__的理解1.1 为什么使用__name__属性?Python解释器在导入模块时,会将模块中没有缩进的代码全部执行一遍(模块就是一个独立的Python文件)。开发人员通常会在模块下方增加一些测试代码,为了避免这些测试代码在模块被导入后执行,可以利用__name__属性。1.2 __name__属性。__name__属性是Python的一个内置属性,记录了一个字符串。若是在当前文件,__name__ 是__main__。在hello文件中打印本文件的__name__属性值,显示的是__main__若是导入的文件,__name__是模块名。test文件导入hello模块,在test文件中打印出hello模块的__name__属性值,显示的是hello模块的模块名。因此__name__ == '__main__' 就表示在当前文件中,可以在if name == '__main__':条件下写入测试代码,如此可以避免测试代码在模块被导入后执行。模块导入我们知道,当我们把模块A中的代码在模块B中进行import A时,只要B模块代码运行到该import语句,模块A的代码会被执行。模块A:# 模块A a = 100 print('你好,我是模块A……') print(a) 模块B: # 模块B from package01 import A b = 200 print('你好,我是模块B……') print(b)运行模块B时,输出结果如下:你好,我是模块A……100你好,我是模块B……200如果在模块A中,我们有部分的代码不想在被导入到B时直接被运行,但在直接运行A时可直接运行,那该怎么做呢?那就可以用到“if __name__==’__main__:”这行代码了,我们队上面用到的A模块代码进行修改:A模块代码修改为:# 模块A a = 100 print('你好,我是模块A……') if __name__=='__main__': print(a)B模块不做修改,直接执行B模块,输出结果如下:你好,我是模块A……你好,我是模块B……200看到了吗,A模块中的a的值就没有再被输出了。所以,当你要导入某个模块,但又不想改模块的部分代码被直接执行,那就可以这一部分代码放在“if __name__=='__main__':”内部。3. “__name__”与“__main__”看到现在也许心中还是疑惑,那么现在我们来说一说“if__name__=='__main__':”的原理。“__name__”是Python的内置变量,用于指代当前模块。我们修改上面用到的A模块和B模块,在模块中分别输出模块的名称:模块A:# 模块A print('你好,我是模块A……') print('模块A中__name__的值:{}'.format(__name__)) print('-------------------------') 模块B: # 模块B from package01 import A print('你好,我是模块B……') print('模块B中__name__的值:{}'.format(__name__))执行A模块时,输出结果:你好,我是模块A……模块A中__name__的值:__main__-------------------------执行B模块时,输出结果:你好,我是模块A……模块A中__name__的值:package01.A-------------------------你好,我是模块B……模块B中__name__的值:__main__发现神奇之处了吗?当哪个模块被直接执行时,该模块“__name__”的值就是“__main__”,当被导入另一模块时,“__name__”的值就是模块的真实名称。用一个类比来解释一下:记得小时候要轮流打算教室,轮到自己的时候(模块被直接执行的时候),我们会说今天是“我”(__main__)值日,称呼其他人时,我们就会直接喊他们的名字。所以,“__main__”就相当于当事人,或者说第一人称的“我”。所以,当运行“if __name__=='__main__':”语句时,如果当前模块时被直接执行,__name__的值就是__main__,条件判断的结果为True,“if __name__=='__main__':”下面的代码块就会被执行。1参考.^Python中“if __name__=='__main__':”理解与总结 https://www.cnblogs.com/chenhuabin/p/10118199.html.^if name == '__main__': https://www.cnblogs.com/wanao/p/13098783.html
2025年06月06日
1 阅读
0 评论
0 点赞
2025-06-06
VSCode搭建Python开发环境
文章所需的部署环境为Windows10 64位.这篇文章将演示如何搭建一个VSCode编写Python代码的环境。第一步. 安装Python环境(如果已经安装过的可以略过)下载地址:https://www.python.org/downloads/www.python.org/downloads/目前Python最新版本是3.8.5, 但是该版本还处于BUGFIX阶段,所以我们使用稳定的最新版本3.7.8。python2.7 已经在2020-01-01停止维护,如果还在使用Python2的要及时更新哦点击Download后,我们在新页面选择64位安装程序如果下载速度慢的话可以使用代理下载下来打开后,根据图示安装下一步.Documentation:python文档,建议勾上.pip: python安装其他库的工具,必勾.tcl/tk and IDLE: 安装tkinter库和IDLE开发环境, IDLE就是个编辑器,tkinter以后也可以装,这里不推荐勾选.Python test suite:Python标准库测试测试套装,不是必须下一步安装路径自行调整,其余按图示即可。安装成功测试是否有效,win+r 输入cmd 打开控制台,输入python -V,输出了安装的python版本即成功!如果没有输出或者出错,可能是安装时没有勾选添加python安装路径到环境变量,百度一下如何添加即可。VSCode配置Python开发环境接下来就是配置VSCode了,首先打开VSCode, 搜索插件Python并安装。或者直接打开某个.py文件,VSCode右下角将会自动提示你安装。安装完毕后,VSCode应该会出现这个提示需要你选择一个Python的解析器,点击Select Python Interpreter不出意外的话,你已经将Python路径添加到环境变量,于是VSCode可以自动识别到,图中即是你安装的Python解析器的位置了,选择即可。如果VSCode没有提示你选择,那你可以使用ctrl+shift+p, 输入Python Select Python Interpreter 即可。这一步做完后,VSCode可能还会出现这个提示这是VSCode需要你选择一个代码检查插件,你可以直接点击Install来安装pylint,也可以点击Select Linter选择其他的代码检查插件。这里我选择点击Select Linter。或者直接在setting 中输入interpret, 填写pythona安装后的路径VSCode的Python插件默认是使用pylint作为代码检查插件,我更习惯使用pycodestyle。选择后VSCode应该会提示你该插件未安装,点击Install安装即可。python会调用pip去安装,如下图所示即是安装成功了。黄字WARNING是提示pip版本可更新,无大碍。到这里,你已经可以使用VSCode编写python代码了,来试试看!右键可以点击出许多Python插件提供的功能,试试运行该python文件于终端。或者在终端输入 python hello.py 来运行hello.py文件。或者在python文件点击右键,选择“Run Python File in Terminal”成功输出( ̄︶ ̄*))。可以看到Python插件还提供了很多的功能, 比如选中函数后跳转到其实现。
2025年06月06日
0 阅读
0 评论
0 点赞
1
2
3
4
...
10