Virtualenv + SublimeText 的Python开发环境

本文介绍了在Mac系统中使用Docker、Vagrant、virtualenv等工具解决Python库版本冲突和创建独立开发环境的方法,旨在提供一种高效、干净的开发环境解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在Mac上使用Python遇到了问题,由于使用了pyOpenSSL库,其同时存在于/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/Library/Python/2.7/site-packages,Mac python的库中,pyOpenSSL版本为0.13,而最新的pyOpenSSL为0.15.1。使用sudo pip install --upgrade pyopenssl==0.15.1无法将Mac python的库升级,所以无法使用0.15.1的pyopenssl。

尝试了Docker, vagrant, virtualenv,这几个东西都可以实现创建一个较为干净的python开发环境,在尝试了他们之后在这里分享一下心得,仅供参考,这里假定读者也有以上工具的相关经验,不喜勿喷。

1. 基于Docker

其实docker的出现,一定程度上就是为了解决这类问题,我把所有的代码,库文件,二进制,配置文件之类的,放到集装箱里,一并打包给你,所以你就得到了一个跟我环境一模一样的环境,不管是在开发,测试还是生成环境,对于应用来说,周围的环境都一模一样,减少了部署,迁移之类的不必要的麻烦。

如果想要用Docker搭建一个Python开发环境,极为简单,只需要去官方下载Python的docker image即可,启动后,你可能需要安装一些包,然后记得commit保存下你对镜像的修改,下次启动或者把镜像导给你的同事,得到的环境都是一模一样的。

但是千万记得,别把你的代码直接放到docker image中,这是个很不好的选择,万一哪次忘记commit就躲墙角里哭去吧。

建议使用-v参数将Host上的开发目录挂载到容器中,这样仅仅使用了容器提供的环境,而代码跟容器本身并没有关系。

OK,说到这,你可能觉得我说了一大堆的废话,的确废话,因为这一切在Docker中太简单了。

2. 基于Vagrant

Vagrant是什么鬼?前段时间我一直想问这个问题,后来用RancherOS,官方推荐用这货来启动RancherOS,就试了一下。这货实际上就是一个Wrapper,你看到的是统一的接口,但是其背后是各种虚拟机,默认是VirtualBox。

说白了,用Vagrant享受的服务是虚拟机提供的,其box的概念,实际上就是虚拟机的镜像文件。Vagrant支持多种provider,VB,VMWare,AWS之类,的确非常方便。它对环境的打包比Docker更凶猛,直接打包的Virtual machine,和Vagrant的配置,想来并不是那么高效,但是的确方便可行。

如何在Vagrant上,也就是虚拟技术搭建Python环境,就变得很简单了,就跟在一个独立的系统上一样,又是一大堆的废话就不在重复了

3. Buildout

一个致力于给Python提供友好干净的开发环境的工具,网上说这厮已经到了机械时代,virtualenv+pip还处于手工时代,但是个人感觉比virtualenv+pip还复杂,看了一眼,就不想看了

4. Virtualenv

恩,这家伙差不多解决了我的问题,所以非常有好感。

Mac上可以通过pip或代码安装virtualenv,不详细说了。安装之后,通过命令创建一个新的环境,假定我们要创建的环境是叫test-cloud-env,执行如下命令:

$ virtualenv test-cloud-env

这会再当前目录创建test-cloud-env这个目录,并在其下创建bin/,lib/,include/

接下来,你会发现有不少东西放在了bin/目录下,其中有python的解释器,以及一些脚本以及我们的activate脚本。现在,我们马上就要创建一个虚拟的独立Python开发环境了,一个命令也就搞定,为了有个直观的体验,请看以下实例:

$ env python -c "import OpenSSL as a; print a.__version__"
0.13.1
$ source test-cloud-env/bin/activate
$ env python -c "import OpenSSL as a; print a.__version__"
0.15.1

看到区别了吧,启用之前Python使用的是系统的库,启用之后使用新创建的库。

如何给这个env安装依赖库?我使用了requirements.txt来保存需要安装的库及其版本,剩下的交给pip去搞定就行了

$ cat requirements.txt

pexpect
pyOpenSSL == 0.15.1
requests

$ pip install -r requirements.txt

安装完成后,一个虚拟的独立的Python开发环境就OK了。你可以为不同项目创建不同的env。

5. something else?

写到这就打住就没什么意思了,网上不是都搜得到么。。。

我比较喜欢Sublime Text,定制性比较高,已经成为我主要的编辑器了。为了能够让编辑器里的代码直接在Sublime Text里使用我们定制的env执行,我们得开始定制一个build system。

打开编辑器,Tools->Build System->New Build System,添加代码:

{
    "cmd": ["/path/test-cloud/pyenv.sh", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}

保存为Python-Virtualenv.sublime-build

这里用到一个脚本pyenv.sh,这个脚本所做的事情就是激活env,然后执行当前脚本,我们再看看pyenv.sh的内容

#!/bin/bash

pyfile=$1

source /path/to/env/bin/activate
# echo $PWD
env python -u $pyfile

记得给这个脚本加个可执行权限。最后在sublime text 的build system里选择Python-Virtualenv,然后你的脚本就会再自己定制的env中执行了。

另外,对于使用其他环境的Python环境,比如Docker之类,同样可以通过定制Build system来实现远程执行,具体可以参照我的另一篇文章。基本思路是一样的,随意定制。

virtualenv还有个管理器virtualenvwrapper,个人觉得用处不大,因为virtualenv实在是太轻量级了,以至于没有必要折腾复用,当然大型项目除外,呵呵。

### 推荐的 Sublime Text Python 插件 以下是针对 Sublime Text 进行 Python 开发时推荐的一些插件及其功能描述: #### 1. **Anaconda** Anaconda 是一个非常强大的 Sublime Text 插件,专为 Python 开发设计。它提供了代码补全、语法检查、PEP8 风格检测以及文档提示等功能[^1]。通过 Anaconda,开发者可以显著提升编写 Python 代码的效率。 #### 2. **SublimeREPL** SublimeREPL 提供了一个交互式的终端环境,允许用户在 Sublime Text 内部运行 Python 脚本并查看实时输出。该插件支持多行输入和历史记录回溯,非常适合调试和测试小型脚本[^2]。 #### 3. **Python Improved** 此插件增强了 Sublime Text 对 Python 文件的支持,改进了缩进规则、语法高亮显示以及其他一些细节上的用户体验。对于希望获得更流畅编码体验的开发者来说,这是一个不错的选择[^4]。 #### 4. **Virtualenv** 当涉及到多个独立项目或者需要严格控制依赖版本时,虚拟环境变得尤为重要。Virtualenv 插件可以帮助你在 Sublime Text 中轻松切换不同的 Python 解释器及对应的库集合[^3]。 #### 5. **AutoPEP8** 遵循 PEP8 编码标准是每位 Python 程序员的责任之一。AutoPEP8 自动化工具能够按照官方指导原则调整源文件格式,从而减少手动修改的工作量[^5]。 #### 安装方法 所有上述提到过的扩展都可以借助于Package Control来完成安装过程。具体操作如下:按下 `Ctrl+Shift+P` 组合键唤出命令面板,在其中搜索 “Install Package”,之后再从中挑选目标名称即可实现快速部署。 ```python # 示例:验证是否成功启用 AutoPEP8 功能 import autopep8 source_code = 'def example():\n print( "hello world")' formatted_code = autopep8.fix_code(source_code) print(formatted_code) ``` 以上就是几个值得考虑加入到日常工作中使用的优秀解决方案列表;当然还有更多其他类型的附加组件可供探索发现!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值