使用pip或easy_install从仓库安装Python包
到目前为止,我觉得处理Python包安装最简单的方法就是从源代码管理系统中获取源代码,然后在Python的dist-packages文件夹中添加一个符号链接。
这样做的好处是,源代码管理系统让你可以轻松地降级或升级到任何分支或标签,所以效果很好。
有没有办法使用包安装工具(比如easy_install、pip或其他)来实现同样的效果呢?
easy_install会获取tar.gz文件,并通过setup.py install来安装,这样会把包安装到Python 2.6的dist-packages文件夹中。有没有办法配置它,或者pip,让它使用源代码管理系统(比如SVN、GIT、Hg、Bzr)呢?
4 个回答
easy_install 这个工具可以用来下载特定版本的软件包。例如:
easy_install python-dateutil==1.4.0
这条命令会安装版本 1.4,如果你不指定版本,它会默认安装最新的版本 1.4.1。
它也支持从 svn(一个版本控制系统)中检出代码,但这样做对你手动管理版本的好处不大。想了解更多信息,可以查看上面的手册。
能够切换到特定的分支通常没什么用,除非你是在开发这些软件包。即使在这种情况下,把它们安装到 site-packages 目录下也不是个好主意。
如果你下载了一个软件包的源代码,里面有一个叫“setup.py”的文件,那么如果这个软件包是基于“setuptools”的(这个工具也支持easy_install),你可以进入这个目录,然后输入:
$ python setup.py develop
这样做会在dist-packages目录下创建正确的符号链接,这样源代码中的.py文件就会被导入,而不是安装了单独的副本(“setup.py install”会做的事情就是创建这些单独的副本,这些副本在你修改源代码时不会立即更新)。
正如其他回答所提到的,你可以看看“setuptools”的文档,了解更多信息。“setup.py develop”是一个非常有用的功能!尝试和虚拟环境一起使用“setup.py develop”,这样你就可以轻松地进行设置,而不会弄乱你系统中的Python环境,避免安装一些你只是暂时开发的包:
http://pypi.python.org/pypi/virtualenv
使用 pip 这个工具非常简单。比如说:
pip install -e hg+http://bitbucket.org/andrewgodwin/south/#egg=South
Pip 会自动从源代码库克隆代码,并运行 "setup.py develop" 来把它安装到你的环境中(希望你是在一个 虚拟环境 中)。它支持 Git、Subversion、Bazaar 和 Mercurial 等版本控制工具。
你还可以运行 "pip freeze",它会输出你当前安装的所有软件包及其确切版本的列表(对于开发安装来说,还包括版本控制系统中的确切修订版本)。你可以把这个列表直接放到一个需求文件里,之后再运行
pip install -r requirements.txt
来安装相同的软件包,并确保版本完全一致。