11

我喜欢 Rails 项目的一件事是,当部署到远程服务器时,如果一切设置正确,您可以这样做:

$: bundle install

系统将安装运行项目所需的各种依赖项(ruby gems)。

Python/Django 有类似的东西吗?

4

2 回答 2

13

您可以冻结需求。这会生成项目所需的所有 Python 模块的列表。我相信bundle在概念上是相似的。

例如:

virtualenv --no-site-packages myproject_env # create a blank Python virtual environment
source myproject_env/bin/activate # activate it
(myproject_env)$ pip install django # install django into the virtual environment
(myproject_env)$ pip install other_package # etc.
...
(myproject_env)$ pip freeze > requirements.txt

最后一行生成一个文本文件,将所有安装在您的自定义环境中的包。您可以使用该文件在其他服务器上安装相同的要求:

pip install -r requirements.txt

当然你不需要使用pip,你可以手动创建需求文件;它没有任何特殊的语法要求。每行只有一个包和(可能)版本标识符。这是一个带有一些额外包的典型 django 项目的示例:

Django==1.4
South==0.7.4
Werkzeug==0.8.3
amqplib==1.0.2
anyjson==0.3.1
celery==2.5.1
django-celery==2.5.1
django-debug-toolbar==0.9.4
django-extensions==0.8
django-guardian==1.0.4
django-picklefield==0.2.0
kombu==2.1.4
psycopg2==2.4.5
python-dateutil==2.1
six==1.1.0
wsgiref==0.1.2
xlwt==0.7.3
于 2012-08-22T08:51:56.260 回答
4

最接近的可能是virtualenvpip需求文件。使用这 3 个成分很容易编写一个简单的引导脚本。

更苛刻和更复杂的是扩建。但我只会在 virtualenv 和 pip 不够用的情况下才去做。

如果您使用结构和可选美食扩展此方法,您的项目部署已经自动化。查看这些链接以获取更多信息:

于 2012-08-22T08:48:59.037 回答