python打包模块 怎样用包管理多个模块

您目前使用的浏览器该进博物馆啦~~~
为了更佳的浏览体验,请使用现代浏览器访问本站
Outdated Browser
您的浏览器已禁用 Javascript,启用它获得更好的体验。
Outdated Browser
这是为桌面用户准备的工具,但您可以安心在这里浏览
46.5% 的互联网用户在使用 此款浏览器
GOOGLE CHROME
支持如下操作系统
16.5% 的互联网用户在使用 此款浏览器
MOZILLA FIREFOX
支持如下操作系统
21.6% 的互联网用户在使用 此款浏览器
INTERNET EXPLORER
支持如下操作系统
10.3% 的互联网用户在使用 此款浏览器
APPLE SAFARI
支持如下操作系统
1.5% 的互联网用户在使用 此款浏览器
支持如下操作系统
冷静 这是为桌面用户提供的不是为手机用户提供的python 两个包管理工具有什么不同 - 开源中国社区
当前访客身份:游客 [
当前位置:
想问一下& python 的& easy_install 和 pip 两个工具都是用来给python 安装扩展包的,
那么这两个工具到底有啥不同的地方呢?
共有5个答案
<span class="a_vote_num" id="a_vote_num_
easy_insall的作用和perl中的cpan, ruby中的gem类似,都提供了在线一键安装模块的傻瓜方便方式,而pip是easy_install的改进版, 提供更好的提示信息,删除package等功能。老版本的python中只有easy_install, 没有pip。
--- 共有 1 条评论 ---
也就是说,我使用pip freeze 可以看到的当前已经安装的扩展,可以通过 pip uninstall '扩展包名'
就可以直接uninstall掉昂?
easy_install 就不提供uninstall 的功能吧?
那么,通过这两个工具安装的扩展包,都安装在了哪个目录了呢?
如果没有这两个工具,手动该如何删除安装的扩展包?
想详细了解下这方面的东东
(5年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
pip是更先进的
<span class="a_vote_num" id="a_vote_num_
其实 &扩展包 就是一个文件的物理位置 你可以 &有时间 自己看看 你安装的扩展包在哪里
<span class="a_vote_num" id="a_vote_num_
virtualenv|
pip &-------------------------&buildout
------------\-------------
+----\------+
+----\------+
| distutils &&&&&&&&&&&&&| setuptools|&&&&&&&&distribute
+----/------+
+-----/-----+
| wants to
replace it
+-----------+
+-----\-----+
|source tar &&&&&&&&&&&&&&
+-----------+
+-----------+
--- 共有 2 条评论 ---
(3年前)&nbsp&
画这种图用了什么工具吧?
(3年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
引用来自“sf.cumt”的答案 virtualenv|
pip &-------------------------&buildout
------------\-------------
+----\------+
+----\------+
| distutils &&&&&&&&&&&&&| setuptools|&&&&&&&&distribute
+----/------+
+-----/-----+
| wants to
replace it
+-----------+
+-----\-----+
|source tar &&&&&&&&&&&&&&
+-----------+
+-----------+
看这个就明白了很多...
--- 共有 1 条评论 ---
这个图太霸气了!网站也不错,就是这里打开较慢
(3年前)&nbsp&
更多开发者职位上
有什么技术问题吗?
502BadG...的其它问题
类似的话题python中包管理工具(easy_install和pip的用法)
刚开始学习Python时,在看文档和别人的blog介绍安装包有的用easy_install, setuptools, 有的使用pip,distribute,那麽这几个工具有什么关系呢,看一下下面这个图就明白了
可以看到distribute是setuptools的取代,pip是easy_install的取代。
关于这些包工具可以参考&http://guide.python-distribute.org/installation.html#installing-pip
下面简单的介绍一下:
Distribute是对标准库disutils模块的增强,我们知道disutils主要是用来更加容易的打包和分发包,特别是对其他的包有依赖的包。
Distribute被创建是因为Setuptools包不再维护了。
安装Distribute
可以通过&脚本来安装Distribute,也可以通过easy_install, pip,源文件来安装,不过使用distribute_setup.py来安装是最简单和受欢迎的方式
$ curl -0 http://python-distribute.org/distribute_setup.py
$ sudo python distribute_setup.py
Pip 是安装python包的工具,提供了安装包,列出已经安装的包,升级包以及卸载包的功能。
Pip 是对easy_install的取代,提供了和easy_install相同的查找包的功能,因此可以使用easy_install安装的包也同样可以使用pip进行安装。
Pip的安装可以通过源代码包,easy_install或者脚本。
下面介绍一下各种安装方法:
源代码方式:
$ wget http://pypi.python.org/packages/source/p/pip/pip-0.7.2.tar.gz (替换为最新的包)
$ tar xzf pip-0.7.2.tar.gz
$ cd pip-0.7.2
$ python setup.py install
easy_install:
$ easy_install pip
get_pip.py 脚本:
$ curl -0 /pypa/pip/master/contrib/get-pip.py
$ sudo python get-pip.py
OK, 下面来看一下Pip的使用
安装package
$ pip install Markdown
列出安装的packages
$ pip freeze
安装特定版本的package
通过使用==, &=, &=, &, &来指定一个版本号。
$ pip install 'Markdown&2.0'
$ pip install 'Markdown&2.0,&2.0.3'
升级包到当前最新的版本,可以使用-U 或者 --upgrade
$ pip install -U Markdown
$ pip uninstall Markdown
pip search &Markdown&
PS -- 包安装后的py文件路径:/usr/local/lib/python2.7/dist-packages
几个Python配置工具简介:setuptools、pip、virtualenv
本篇快速总结几个Python的常见配置工具,包括setuptools、pip、virtualenv。
setuptools
setuptools管理Python的第三方包,将包安装到site-package下,安装的包后缀一般为.egg,实际为ZIP&#26684;式。默认从&&下载包,能够解决Python包的依赖关系。
安装了setuptools之后即可用&easy_install&命令安装包,有多种安装方式可以选择。
# easy_install PACKAGE
# 普通安装
# easy_install /home/yeolar/pkg/PACKAGE.egg # 从本地或网络文件系统中安装
# easy_install http://trac-hacks.org/svn/iniadminplugin/0.11/ # 从指定的下载路径安装
# easy_install http://pypi.python.org/simple/PACKAGE/PACKAGE-0.1.2.4.tar.gz # 从URL源码包安装,条件是PACKAGE-0.1.2.4.tar.gz包中的根目录中必须包括setup.py文件
# easy_install -f http://pypi.python.org/simple/ PACKAGE # 从web上面搜索包,并自动安装
# easy_install PACKAGE==0.1.2.1 # 指定包的版本,如果指定的版本高于现已安装的版本就是升级了
# easy_install -U PACKAGE
# 升级到最新版本,不指定版本就会升级到最新版本
# easy_install -U PACKAGE==0.1.2.2 # 升级到指定版本
# easy_install -m PACKAGE
# 卸载包,卸载后还要手动删除遗留文件
pip也是一个包管理工具,它和setuptools类&#20284;,如果使用virtualenv,会自动安装一个pip。
# pip install PACKAGE
# pip -f URL install PACKAGE
# 从指定URL下载安装包
# pip -U install PACKAGE
virtualenv
virtualenv是一个Python环境配置和切换的工具,可以用它配置多个Python运行环境,和系统中的Python环境隔离,即所谓的沙盒。沙盒的好处包括:
解决库之间的版本依赖,比如同一系统上不同应用依赖同一个库的不同版本。解决权限限制,比如你没有&root&权限。尝试新的工具,而不用担心污染系统环境。
$ virtualenv py-for-web
这样就创建了一个名为py-for-web的Python虚拟环境,实际上就是将Python环境克隆了一份。然后可以用source&py-for-web/bin/activate&命令来更新终端配置,修改环境变量。接下来的操作就只对py-for-web环境产生影响了,可以使用&pip&命令在这里安装包,当然也可以直接安装。
$ source py-for-web/bin/activate
# 启用虚拟环境
$ deactivate
# 退出虚拟环境
有个virtualenv-sh包,对virtualenv做了一些终端命令的增强。安装之后,在~/.bashrc中添加配置:
. /usr/local/bin/virtualenv-sh.bash
它提供的几个常用的命令如:
mkvirtualenv &env_name&
在$WORKON_HOME创建虚拟环境
rmvirtualenv &env_name&
删除虚拟环境
workon [&env_name&]
切换到虚拟环境
deactivate
退出虚拟环境
lsvirtualenvs
列出全部的虚拟环境
cdvirtualenv [subdir]
进入虚拟环境的相应目录
$WORKON_HOME&的默认&#20540;为&${HOME}/.virtualenvs&。
&&& 今天在阅读以前项目代码时,发现里面使用的第三方模块的参数相当诡异,总是对不上。经过分析之后,发现是自己安装的第三方模块跟项目使用的版本不一致。在Python中进行模块/包管理的话,就不得不提到easy_install了,它的好处,“谁用谁知道”啊!!!
&&&&一、安装easy_install
&&& 请各位到&&选择适合自己的安装包,我选择的是setuptools
0.6c11,另外竹风使用的是64位的Python,所以下载了&&自行安装。文档里说得很清楚。安装完成后,easy_install 会被添加进环境变量中。比如在竹风的
CentOS 上,可以直接在命令行输入 &easy_install -h& 来查看相关帮助了。
&&&&二、使用easy_install安装第三方模块/包
&&& 操作相当简单,比如竹风现在想安装 tornado 的话,只需要输入&easy_install torando&即可。
&&& &#20540;得注意的是,上面这种情况默认安装的是&&提供的最新版本,这在某些情况下会引发些不必要的疑惑。
&&& 依旧以tornado为例,pypi 现在提供的版本为3.1,但是竹风阅读的项目使用的是2.2.1,这两个版本之间的差别还是相当多的。
&&& 幸好 easy_install 提供了安装指定版本的功能,比如&easy_install tornado==2.2.1& 就能安装tornado 2.2.1了。
&&&&三、easy_install内部如何管理
&&& easy_install对于第三方模块/包的安装路径,默认是Python的 site-packages ,比如竹风的是 /usr/lib/python2.6/site-packages 。大家可以在该目录下找到 easy-install.pth 文件。该文件里面记录了使用easy_install安装的模块/包。而且能从这个文件中判断出当前使用的模块/包的版本。以竹风的easy-install.pth为例:
1 $ cat easy-install.pth
2 import sys.__plen = len(sys.path)
3 ./setuptools-0.6c11-py2.6.egg
4 ./configobj-4.7.2-py2.6.egg
5 ./redis-2.7.2-py2.6.egg
6 ./tornado-2.2.1-py2.6.egg
7 import new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]= sys.__egginsert = p&#43;len(new)
从文件信息中,可以发现目前已经安装的模块/包,以及相关的版本信息。
&&&&四、卸载模块/包
&&& easy_install当然也提供了卸载模块/包的功能。但是必须要注意的是,该模块/包必须要在 easy-install.pth 有相关信息,换句话说,也就是要使用easy_install安装的,才可进行卸载。命令如下: &easy_install -m redis&,这样就会将Python中的redis模块卸载。
&&&&五、安装的模块/包是egg文件?
&&& 在安装第三方模块/包的时候,有可能会发现安装的是一个egg文件,比如“redis-2.7.2-py2.6.egg”。对于好学的程序猿们,想看它的源代码该怎么办呢?相当简单,只需要执行以下unzip就可以了,&unzip redis-2.7.2-py2.6.egg&就可以把源代码解出来。
&&&&六、easy_install的其他参数
&&& 本文篇幅有限,并不能对easy_install的所有参数进行一一介绍。对照下图,大家可以自行琢磨其他参数的使用方法:
比较&#20540;得一提的是 “-d” 参数,可以指定安装目录。这个对于测试是很方便的。比如可以新建一个tmp目录,在里面安装一些模块/包进行测试(此时在tmp目录中也会生成一个easy_install.pth文件,个人推测easy_install在运行时会将所有的pth文件够过一次)。当测试完毕后,只需要将tmp目录删除。
&&& 当然还有 &-z& 和 &-Z&,总是打包成zip文件 or 总是解压。
&&& 希望本文对大家有所帮助^_^
看过本文的人也看了:
我要留言技术领域:
收藏提示你已经自动关注本知识库了哦!
取消收藏确定要取消收藏吗?
删除图谱提示你保存在该图谱下的知识内容也会被删除,建议你先将内容移到其他图谱中。你确定要删除知识图谱及其内容吗?
删除节点提示无法删除该知识节点,因该节点下仍保存有相关知识内容!
删除节点提示你确定要删除该知识节点吗?

我要回帖

更多关于 python 包 模块 的文章

 

随机推荐