如何安装Python/Django模块?
我对Django完全不了解,但我需要在OSX上运行一个现有的项目。
我在项目的目录下运行 python manage.py runserver
,结果出现了错误:Error: No module named cms
。
看起来是settings.py文件中的INSTALLED_APPS常量定义了需要的模块……但是我该怎么安装这些模块呢?
有没有什么标准的方法可以一次性安装这些依赖(就像Ruby的Bundler那样)?
2 个回答
INSTALLED_APPS
里的内容是一些包的名称。包是用来组织Python模块的一种方式。
当你导入一个包时,Python会在
sys.path
指定的目录中查找这个包的子目录。
所以,Python有一些特定的地方用来查找包。
如果你想通过名字把包安装到系统的正确位置,你可以下载一些Python源代码,然后运行setup.py
脚本(这个脚本通常由库和应用提供)。
$ cd /tmp
$ wget http://pypi.python.org/packages/source/p/pytz/pytz-2011n.tar.bz2
$ tar xvfj pytz-2011n.tar.bz2
$ cd pytz-2011n
$ python setup.py install
不过,有更简单的方法,比如easy_install和它的后继者pip。使用这些工具,安装第三方包(或者Django应用)就变得简单了:
$ pip install pytz
或者,如果你使用的是系统默认的Python安装:
$ sudo pip install pytz
就这样。你现在可以在任何地方使用这个库。要检查它是否正确安装,只需在控制台中试一下:
$ python
Python 2.7.2 (default, Aug 20 2011, 05:03:24)
...
>>> import pytz # you would get an ImportError, if pytz could not be found
>>> pytz.__version__
'2011n'
为了简化说明(这篇文章已经太长了),假设pytz是一个第三方的Django应用。你只需要写:
INSTALLED_APPS = (
'pytz',
)
这样pytz就可以在你的项目中使用了。
注意:如果你有时间,可以看看现代Python黑客工具:Virtualenv、Fabric和Pip这篇博客,里面介绍了一些很棒的Python基础工具。
如果你有一个requirements.txt文件,你可以一次性安装所有的依赖包!你只需要运行下面的命令:
pip install -r requirements.txt
如果没有这个文件,你就得一个一个地安装:
pip install django-cms
这里是PIP的文档: http://pypi.python.org/pypi/pip
如果你熟悉Ruby,可以把它和Ruby的GEM做个比较。