项目开发环境搭建
博客专区 > 豆仔 的博客 > 博客详情
项目开发环境搭建
豆仔 发表于4年前
项目开发环境搭建
  • 发表于 4年前
  • 阅读 275
  • 收藏 7
  • 点赞 0
  • 评论 0

移动开发云端新模式探索实践 >>>   

摘要: 从我的论文中复制的。比较啰嗦。

BMC系统采用Python语言开发,Python语言具有跨平台性,能够在各种操作系统中使用,包括Linux、Mac OS和Windwos。在Python网站的主下载页面中可以找到由Python核心开发团队提供的各种版本。

BMC系统使用的是Python 3.3分支,数据库采用MongoDB。由于Python 3分支与Python 2分支的不兼容性,产生了许多问题,配置开发环境的过程中要注意的问题比较多,如果没有正确搭建,则无法正常运行本系统。

虽然Python语言是可移植的,BMC系统最初也是在Windows操作系统下开发,但遇到较多困难,因此并不推荐采用Windows开发,原因有两点:

  1. 较多依赖的包需要使用C语言的编译环境,在Ubuntu下相关环境十分容易安装,在Windows下则比较困难,通常会出现error: Setup script exited with error: Unable to find vcvarsall.bat错误,在StackOverflow上搜索vcvarsall.bat截止2013/12/13有496个相关问题,主要有两种解决方法:一是安装C编译环境,并进行相关配置,相对复杂;二是使用非官方提供的编译好的版本[ Unofficial Windows Binaries for Python Extension Packages:http://www.lfd.uci.edu/~gohlke/pythonlibs/]。第二种方法的缺点是使用的第三方库的版本不一定能得到及时更新,也可能没有提供Python 3的编译版本。

  2. Tornado官方并不支持使用Windows,所提供异步功能需要依赖*nix系统中的相关组件。

本节以Ubuntu 13.10 saucy 64位操作系统为例,介绍开发环境的搭建。

基本环境安装

Ubuntu 13.10同时提供了Python 2与Python 3的解释器,无需安装。由于Python 2与Python 3分支不兼容,因此安装相应第三方库时,要特别注意是否为Python 3分支版本。由Ubuntu提供的Python 3分支版本的第三方库的会以python3为前缀,如python3-pip。

Python拥有大量的第三方库,存储在Python官方网站的集中式仓库Python Package Index(PyPI),pip是用于安装与管理Python第三方库的工具,在终端下使用如下命令安装:

$ sudo apt-get install python3-pip

通常Python的第三方库会存在许多版本,假设操作系统中的一个应用程序需要版本4的Beautiful Soup,而另一个应用程序需要版本3的Beautiful Soup,不可能在全局库中同时安装这两个版本的包,如果将所有的包都安装到Python的默认包安装目录,比如/usr/lib/python3/dist-packages中,那么就可能在无意中升级了一个不应该升级的包,导致早期的应用程序无法运行。更一般的情况,如果已经有一个可以正常运行的应用程序,那么任何关于库与库的版本的变化都可能导致应用程序的崩溃。另一种情况,对于共享的主机,可能会没有权限将包安装到全局的dist-packages目录中。virtualenv就是用来处理这些情况的工具。

virtualenv是一个创建独立Python虚拟环境的工具,各个环境中拥有自己的python解释器和各自的第三方库安装目录,互不影响,解决了基本的依赖与版本问题,以及间接权限。对于安装在全局环境中的库,在创建虚拟环境时可以通过参数设置是否使用。

虽然virtualenv可以有效的隔离环境,但是使用起来比较不方便,任何操作都需要进入相应的目录,因此出现了对其进行扩展的virtualenvwrapper。virtualenvwrapper是virtualenv工具的一组扩展,提供了切换开发环境的快捷命令。在终端中使用如下命令安装virtualenvwrapper:

$ sudo pip3 install virtualenvwrapper

出现:Successfully installed virtualenvwrapper virtualenv virtualenv-clone stevedore表示安装成功。可以看出,安装virtualenvwrapper的同时,也自动为我们安装了virtualenv。 在HOME目录中新建文件夹Devel用于放置项目文件。

在~/.bashrc文件末尾添加配置:

<!-- lang: shell -->
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Devel
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
export PIP_VIRTUALENV_BASE=$WORKON_HOME
export PIP_RESPECT_VIRTUALENV=true
if [[ -r /usr/local/bin/virtualenvwrapper.sh ]]; then
    source /usr/local/bin/virtualenvwrapper.sh
else
    echo "WARNING: Can't find virtualenvwrapper.sh"
fi

保存后在终端中运行“$ source ~/.bashrc”或重启终端,即可使配置生效。

创建项目使用命令“mkproject bmc”,该命令会在上面设置的“$PROJECT_HOME”中创建bmc目录,里面放置项目的源码,还会同时在“$WORKON_HOME”目录中创建bmc目录相当于创建了虚拟环境,用于存放相关的库文件;可单独使用“mkvirtualenv bmc_new_libs”创建虚拟环境,并与项目关联,这里直接使用默认创建的即可;激活环境使用命令“workon bmc”;退出环境使用命令“deactivate”;删除环境使用命令“rmvirtualenv bmc”(需谨慎使用);每次启动终端时,执行“workon bmc”即可切换到bmc这个虚拟环境(在virtualenv中需要切换至少3次目录才能达到同样的效果),该命令会自动转入项目目录并使用虚拟环境,终端提示符中多了“(bmc)”表示已激活的虚拟环境名称。如下:

zoey@zoey-VirtualBox:~$ workon bmc
(bmc)zoey@zoey-VirtualBox:~/Devel/bmc$

在安装BMC系统所依赖的Python包之前,需要在终端中安装如下依赖:

$ sudo apt-get install libcurl4-gnutls-dev libxml2 libxml2-dev libxslt1.1 libxslt1-dev

然后在虚拟环境中运行:

(bmc)zoey@zoey-VirtualBox:~/Devel/bmc$ pip install -r requirements.txt

出现如下提示表示安装成功:

Successfully installed Markdown Pillow Whoosh beautifulsoup4 chardet2 cssselect html5lib lxml pycurl pymongo tornado six

可能出现未能正常安装包的情况,需要独立安装,例如,pycurl。对于pycurl,在本应用开发时,使用pip安装的版本并不能正常使用,存在Bug,因此使用了特殊的安装方式。在终端中使用“sudo apt-get install python3-pycurl python3-pycurl-dbg”安装Ubuntu预编译的Python3版本的pycurl,然后到“/usr/lib/python3/dist-packages”文件夹中拷贝pycurl相关的库文件到“~/.virtualenvs/bmc/lib/python3.3/site-packages”文件夹中,包括curl文件夹、pycurl.cpython-33dm-x86_64-linux-gnu.so、pycurl.cpython-33m-x86_64-linux-gnu.so、pycurl-7.19.0.egg-info。

BMC系统开发时Tornado的最新稳定版本为3.1.1,pycurl与Tornado 3配合使用在Python 3中还存在Bug,简单修改Tornado的源代码即可正常使用,如图4.4。

图4.4 修改Tornado源代码,httputil.py163行,curl_httpclient.py461行

至此,Python相关环境配置完成,可从GitHub上克隆项目至bmc目录中(git clone,或直接下载项目包),接着在安装MongoDB数据库后,即可使用如下命令启动tornado服务: (bmc)zoey@zoey-VirtualBox:~/Devel/bmc$ python run.py 在浏览器中打开http://localhost:8888即可使用系统的Web客户端。

MongoDB安装

10gen为比较流行的平台维护并发布自己的包,在mongodb.org网站上可以找到安装这些特殊包的详细信息。在Ubuntu上安装MongoDB十分简单,在终端中使用如下四条命令即可:

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
$ echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
$ sudo apt-get update
$ sudo apt-get install mongodb-10gen

接着为MongoDB的运行目录添加权限:

$ sudo chown mongodb /var/lib/mongodb
$ sudo chown mongodb /var/log/mongodb

配置信息保存在/etc/mongodb.conf,可根据需求进行修改。常用命令如下:

  • 启动服务:sudo service mongodb start
  • 停止服务:sudo service mongodb stop
  • 重启服务:sudo service mongodb restart

通常系统启动时会自己启动MongoDB服务。对于喜欢使用GUI软件查看数据库的开发人员,推荐安装使用Robomongo进行数据库管理,它提供了MongoDB的JS Shell可直接输入命令,跨平台,提供命令自动补全,并采用多标签窗口。如图4.5为在Robomongo中查看BMC系统的数据库,图4.6为BMC系统中一条书签文档,与SQL数据库不同的是,标签tags可以以数组的形式保存,无需单独创建一个数据库表来保存标签。

图4.5 在Robomongo下查看本系统数据库

图4.6 在Robomongo下查看一条书签文档

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 54
博文 49
码字总数 24065
×
豆仔
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: