ctags和virtualenv神级配合

Linux开发工具链构建指南:从场景化选型到实战配置 在软件开发领域,工具链的构建与优化是提升工程效率的核心环节。其基本原理是根据开发场景、技术栈和团队协作需求,模块化地选择和组合工具,形成高效的工作流。这一实践的技术价值在于,它能够显著降低环境配置成本、提升开发与调试效率,并保障项目的一致性与可维护性。无论是进行后端服务、前端应用还是系统级开发,合理的工具链都能帮助开发者聚焦于核心业务逻辑。本文以Linux平台为例,深入探讨了如何围绕编辑器、编译器、调试器等核心组件,结合现代构建系统和容器化技术,构建一套顺手的开发环境。文中特别融入了对Vim模态编辑和GDB 阅读详情

最近看基于gevent和django的项目代码,频繁翻官网,但是还是有些地方官网说明不是很详细,就想通过看源码来看怎么使用,用ctag和virtualenv配合就很方便的实现了这个功能,而且看完源代码还能跳回来,继续阅读代码,快哉。

ctags和virtualenv简单介绍:

ctags查看代码的时候真的很方便,ctr+shift+鼠标左键就跳转到函数定义的地方了,然后ctr+shift+鼠标右键又能跳转回来,大大提高工作效率。

ctags是通过遍历一个目录下所有文件,生成一个.ctags文件来实现这个功能。

而virtualenv是在一个目录下模拟python安装环境,然后在这个虚拟环境里面装的所有模块都只供这个环境里面使用,不会和全局安装的(就是普通情况下安装的python模块)冲突,这样就能很方便的根据项目情况安装不同版本的模块了。

安装方法:

ctags安装:

sudo apt-get install ctags
我使用的sublime,在这个编辑器里面装的ctags插件,其他编辑器安装方法自行查找。sublime版本为3
需要先安装package control插件,执行ctr+`,在终端里面输入:
import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); open(os.path.join(ipp, pf), 'wb').write(urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ','%20')).read())

在sublime里面执行ctr+shift+p,弹出窗口,输入install,选择install package,然后输入ctags,点击即可安装。

virtualenv安装:

我安装的是virtualenvwrapper,
pip install virtualenvwrapper
cd ~	//普通用户权限
mkvirtualenv holytree1 //创建虚拟环境,holytree1是我创建的环境名称,创建后就自动进入环境了,然后就可以pip安装了
workon holytree1	//进入或者切换到hollytree1环境


ctags和virtualenv配合

我本机上创建好virtualenv环境的virtualenv目录:

/home/shaoxing/.virtualenvs/holytree1/
├── bin
├── build
├── djcelery
│   ├── static
│   │   └── djcelery
│   └── templates
│       ├── admin
│       └── djcelery
├── include
│   ├── go
│   │   └── protocol
│   └── python2.7 -> /usr/include/python2.7
├── lib
│   └── python2.7
│       ├── distutils
│       ├── encodings -> /usr/lib/python2.7/encodings
│       ├── lib-dynload -> /usr/lib/python2.7/lib-dynload
│       └── site-packages
├── local
│   ├── bin -> /home/shaoxing/.virtualenvs/holytree1/bin
│   ├── include -> /home/shaoxing/.virtualenvs/holytree1/include
│   └── lib -> /home/shaoxing/.virtualenvs/holytree1/lib
└── src
    └── xadmin
        ├── demo_app
        ├── django_xadmin.egg-info
        ├── tests
        └── xadmin

环境里安装的python模块就放在lib/site-packages下面的。

我的项目目录:~/work,此时,只需要在这个目录里创建一个/home/shaoxing/.virtualenvs/holytree1/目录的软链接,然后创建.ctags文件,sublime3里面右键work目录,选择ctags:bulid ctags,等待完成,这时你就可以很容易的根据项目代码查看到模块的源代码出处了,不需要上网去查,不需要去site-packages目录里去找,只需要在你调用的地方按下ctr+shift+鼠标左键,就能跳转过去,然后看完还能轻松跳转回来,简直不要太方便。。


本人出于个人兴趣,创建了一个个人公众号,每天筛选国外网友发现的有趣的事情推送到公众号,欢迎关注!


C/C++程序员如何通过PyCharm拓宽架构视野与技能栈 在软件工程领域,集成开发环境(IDE)和脚本语言是提升开发效率的关键工具。IDE通过深度集成代码编辑、调试、构建和版本控制等功能,为开发者提供无缝的工作流体验,其核心原理在于对编程语言的语义理解和智能辅助。脚本语言如Python,以其解释型特性和丰富的库生态,在快速原型验证、自动化任务和胶水逻辑中展现出巨大技术价值,广泛应用于数据分析、人工智能和系统管理等领域。对于长期深耕C/C++的程序员而言,接触PyCharm这类现代IDE和Python语言,不仅是学习新工具,更是一次对“构建思维”与“解释思维”差异的 阅读详情

相关推荐

如何使用python写一个操作系统

如何使用python写一个操作系统环境准备写一个操作系统所需环境非常简单,我使用的以下环境: ubuntu 14.04 64位 virtualenvwarpper python3 virtualenvwarpper介绍virtualenvwarpper是对virtualenv的封装,使用起来更加方便,virtualenv原理是创建一个目录,然后把所有模块都安装在这个目录下面,这样的话就可以和其他环境

ECHOutopia的专栏 1万+

1-2:linux下安装Ctags

Ctags的安装步骤: 第一步:

我们的时光! 1640

protobuf rpc介绍

刚接触protobuf通过service实现rpc真的是一头雾水,相关资料非常少,找到的资料也看不懂,最后找到了两篇博文,非常详尽,看完就懂了。

ECHOutopia的专栏 8385

ev3dev编程基础必知清单:文件权限、Shebang与brickrun运行器全解析

ev3dev 编程基础中,有三个概念几乎决定着你第一个机器人程序能否顺利跑起来:**文件权限**、**Shebang** 和 **brickrun 运行器**。ev3dev 是一套基于 Debian Linux 的操作系统,可运行在 LEGO MINDSTORMS EV3、树莓派(BrickPi、PiStorms)等乐高机器人硬件上。与图形化编程不同,ev3dev 编程更接近 Linux 原生开发

gitblog_00091的博客 953

python监听本地目录,并将目录下的文件同步到远端服务器

最近写了个文件监听同步的脚本,查找资料的时候发现大部分都是rsync和inotify的方案 粗看了下就是利用这两个工具,再配置来实现,这两个工具都很强大 但是考虑到那么多配置,而且两台机子都要配置,部署会很麻烦 如果自己写功能,就无需配那么多配置项,只需要安装好python的模块再配置一些简单的项就能用了, 还能根据需求自己定制一些功能,只不过性能稳定性什么的也许没有那个成熟的方案好,但是

ECHOutopia的专栏 5647

python两种方法实现从1000万个随机数中找出top n元素(附c语言版)

很早之前看到一道面试题: 有一个长度为1000w个数组,每个元素互不重复,找出其中top n元素。 我感觉重复或者不重复都差不多,所以没管不重复这个条件。 我把1000w个结果放在了文件中,方便重复利用,生成代码: import random with open("random_number.txt","w") as f: for i in range(1,10000000):

ECHOutopia的专栏 5628

tornado和beego的helloworld性能对比

测试环境: windows10虚拟机vmware安装的ubuntu14.04 内存1g,处理器数量2个,每个处理器核心数量1个 测试工具apchebench(ab) python版本:2.7 tornado版本4.3 go版本1.4 beego版本不知道 tornado helloworld: import tornado.ioloop import tornado.we

ECHOutopia的专栏 1万+

python多线程join方法导致不能接收信号

今天写一个小工具,开启多个线程,在子线程里循环执行任务,发现不能退出程序,然后折腾了半天,还是退出不了,最后发现,原来是个bug

ECHOutopia的专栏 3530

python使用select监听非阻塞socket遇到的问题

昨天学python的select的时候,发现一个非常诡异的事情,到现在也没弄明白,所以在这记录一下 服务端实现了一个简单的echo服务器,相关代码如下: #coding=utf-8 import select

ECHOutopia的专栏 5808

半导体工厂自动化实战:用secs4net实现设备与MES系统通信(附完整代码)

本文详细介绍了如何利用secs4net框架实现半导体工厂设备与MES系统的高效通信。通过解析SECS/GEM协议的核心架构、关键业务场景实现及性能优化实践,帮助开发者快速掌握工业自动化通信技术,提升生产效率和系统稳定性。

transformer2023的博客 892

SEED-VII 实战指南:如何利用多模态脑电图数据提升情感识别精度

本文提供了SEED-VII多模态脑电图数据集的实战指南,详细介绍了如何利用该数据集提升情感识别精度。内容涵盖数据获取、预处理、特征提取,以及构建多模态融合神经网络模型的关键步骤,并强调了被试者独立评估的重要性,为情感计算研究者提供了从数据到模型的全流程解决方案。

weixin_29196891的博客 316

一个新手用golang重写python rpc框架总结

从前,我是个phper,每天被困在反反复复的增删改查的工作中,后来接触了python后,便对php嗤之以鼻,并且在python中拓宽了眼界,发现了后端世界,于是换了份python游戏服务器的工作,更加后台了。 python开发久了后,我有些腻了,因为python在我心里不再完美了,它的黑魔法实在太多了,导致python入门简单,精通实在太难,这么多语法糖、黑魔法,他们再以各种组合、各种花样实现各...

ECHOutopia的专栏 3573

Fluent基于低氧舱气体交换仿真(氮气与空气混合)

一、背景概述 模拟低氧舱充氮气和排除混合气体的过程,假设注入95%的氮气,舱内原有气体为空气,压力为标准大气压,温度为300K。观察气体注入过程中,舱内平均氮气和氧气浓度的变化。 二、Fluent设置 Setup 1、General type选择压力基 绝对速度 瞬态 重力勾选 2、Model 能量方程开启 组分运输开启,设置方法如下: 选择后OK,view就会变成Edit,点击Edit。然后再次点击Edit。 将组分中的非氮气氧气和空气的气体移除,右边选项需要将空气放在最后一位。 3、Materi

qq_35535616的博客 1万+

python dist-packages 和 site-packages

dist-packages 和site-packages在我的ubuntu12上都在/usr/local/lib/python2.7目录下 今天安装django时发现一个奇怪的现象: 我使用 pip install Django==1.8.4安装的django,安装成功,直接在终端使用django-admin也成功,但是进入python:import dnango,却提示no module n

ECHOutopia的专栏 3262

第一届“龙信杯”电子数据取证竞赛Writeup

第一届“龙信杯”电子数据取证竞赛Writeup

toto的博客 1万+

内存预取黑科技:__builtin_prefetch在数据库和游戏开发中的高阶用法

本文深入探讨了GCC内置函数`__builtin_prefetch`在数据库和游戏开发中的高阶应用。通过LevelDB的SSTable文件读取优化和UE5引擎场景数据流式加载的实战案例,详细解析了预取参数调优的艺术,并借助perf工具量化分析了不同策略的性能提升效果。文章还介绍了与`__builtin_expect`等内置函数的协同优化技巧,帮助开发者最大化缓存命中率。

weixin_29019241的博客 415

pyqt给js赋值,获取form表单值

帮同事写客户端,发现pyqt和wxpython的api何其的多,资料又少,写一个包含各种表单的客户端对我来说难度很大,于是想到使用webkit来渲染html,pyqt自然成了我的选择。 但是发现,平时在web开发中,html向web后台获取数据或者提交数据这样简单的事,在pyqt中我完全不知道怎么办,资料又各种少。 最后找到了对应的简单例子,但是获取表单数据的那个例子在怎么都不起作用,正在要放

ECHOutopia的专栏 2672

STC8G1K08A 实战应用:从配置到功能实现

本文详细介绍了STC8G1K08A单片机的实战应用,从开发环境搭建、GPIO配置、ADC模块使用到定时器中断处理和PWM输出等核心功能。重点讲解了外设模块的协同工作配置技巧,并分享了实际项目开发中的经验教训,帮助开发者快速掌握STC8G1K08A的高效应用。

n4o5p6q7r的博客 390

truncate file python

今天写代码读写文件发现文件内容出现'\x00\x00\x00123',前面多了很多0。最后发现原来是自己truncate的姿势不对 先来看看truncate函数用法吧:

ECHOutopia的专栏 2406

【OpenCV】图像的像素直方图 图像特征点 cv::FAST cv::ORB ORB_SLAM2::ORB

文章目录图像直方图代码实现cv::FAST和cv::ORB 检测图像特征点cv::FAST和cv::ORB 检测图像特征点代码实现ORB_SLAM2::ORB和自己实现ORB图像特征点检测效果对比ORB_SLAM2::ORB和自己实现ORB图像特征点检测效果对比代码实现 图像直方图代码实现 图像是由不同数值(颜色)的像素构成的,像素值在图像中的分布情况是图像的重要属性,可以用直方图修改图像的外观,标识图像的内容,检测图像中特定的物体或纹理。 单通道灰度图像中每个像素都有一个 0(黑色)-255(白色)的整

小秋 AI SLAM 入门实战教程 2510

数学建模学习(121):Python实现模糊AHP(Fuzzy AHP)——从原理到实践

Python实现模糊AHP(Fuzzy AHP)

全栈川川 1539

python常用内值函数算法复杂度

之前很长一段时间我计算字典长度都是自己维护一个长度变量,每次字典元素有增减就改变变量,今天发现len()对大多数常见数据结构都是O(1)的,我当时就崩溃了,原来我多此一举了。 这里是常见数据结构的函数复杂度: https://wiki.python.org/moin/TimeComplexity stackover相关问题: shttp://stackoverflow.com/question

ECHOutopia的专栏 2261

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

200行python代码实现一个类似django的简单模板引擎

教程原文地址: http://aosabook.org/en/500L/a-template-engine.html 大致原理: 根据模板语法,通过html生成python函数,这个函数作用就是输出纯html, 这样只解析一次html模板就够了,以后直接通过这个python函数来生成html内容,提高效率。 以下是我对代码的理解并做出的注释: https://git

ECHOutopia的专栏 1541

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

concurrent.futures源码解析

concurrent.futures模块在异步编程中非常常用,我常用在tornado里用它将同步操作异步化,这么优秀的模块,肯定很好奇它的内部原理的。 在网上搜了一些资料,感觉附加讲解还不如代码详细,于是就自己去看源码了, 而源码非常优秀,文件结构也非常简单,只有三个文件: _base.py:主要定义了一些常量、类、方法等,为thread和process使用 process.py:Process

ECHOutopia的专栏 1232

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 393
上一篇: 关于UNIX和Linux系统下SUID、SGID的解析
下一篇: protobuf rpc介绍
ECHOutopia
博客等级 码龄14年 11粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值