如何为 OpenShift Online Next Gen Developer Preview 创建 requirements.txt 文件?

How to create a requirements.txt file for OpenShift Online Next Gen Developer Preview?

tl;dr

我正在尝试为本地 运行 的现有应用程序创建 requirements.txt 文件。

我想知道 requirements.txt 文件中应该包含哪些内容。

我这样做是为了获取本地应用程序 运行:

OpenShift Online (Next Gen) Developer Preview

详情

myapplication.py 有一些标准的 import 语句,例如:

#  from python standard library

import os
import re
import StringIO
import json
import ast
import struct
import time
import collections

它还包含 import 格式的语句 from X import X,例如:

#  additional modules

from bottle import route, post, default_app, template, view, TEMPLATE_PATH, response, request, static_file, install, redirect
# BEGIN pymongo
import pymongo
from bson.json_util import dumps
import gridfs
# END pymongo
import requests
from bs4 import BeautifulSoup
import lxml
import base64
import tldextract
from PIL import Image
import serial

from beaker.middleware import SessionMiddleware
from cork import Cork
from cork.cork import AuthException
from cork.cork import AAAException
from cork.backends import MongoDBBackend

import user_settings (a local .py file)

在本地设置应用程序时,我还必须从 Ubuntu 软件中心安装这些:

apache2
virtualenv
mod_wsgi

virtualenv 中的 pip 安装需要这些包才能工作:

python2.7-dev
libxml2-dev
libxslt1-dev
apache2-dev
zlib1g-dev
libjpeg8-dev

这些是在 virtualenv 激活时安装在 pip 中的:

pip install bottle
pip install https://github.com/FedericoCeratto/bottle-cork/archive/master.zip
pip install requests
pip install pymongo==2.8
pip install beautifulsoup4
pip install lxml
pip install Beaker
pip install pillow
pip install tldextract
pip install serial

问题

01) 我的 requirements.txt 文件的内容是否需要如下所示:

pymongo
requests
lxml
tldextract
pyserial
bottle
git+git://github.com/FedericoCeratto/bottle-cork.git#egg=bottle-cork
beautifulsoup4
Beaker
pillow

02) myapplication.py 是否仍需要具有上述定义的导入语句?

03) pip 安装需要以下内容才能在 virtualenv 中工作,这些是否已经在 OpenShift 环境中,如果没有,我该如何添加它们?

python2.7-dev
libxml2-dev
libxslt1-dev
apache2-dev
zlib1g-dev
libjpeg8-dev

04) requirements.txt 是否位于 repo 目录的顶级目录中?

作为参考和更多信息,这些是 运行 在 virtualenv 中本地冻结 pip 的结果:

(ENV) me@my-computer:/var/www/html/site-name/ENV$ pip freeze
-markerlib==0.0.0
Beaker==1.8.0
beautifulsoup4==4.4.1
bottle==0.12.9
bottle-cork==0.12.0a2
funcsigs==1.0.0
idna==2.1
lxml==3.6.0
ordereddict==1.1
Pillow==3.2.0
pkg-resources==0.0.0
pycrypto==2.6.1
pymongo==2.8
pyserial==3.0.1
requests==2.9.1
tldextract==1.7.5

1) 这就是我最终使用的 requirements.txt:

pymongo 
requests
lxml
tldextract
pyserial
bottle
# git repo at specific commit - bottle-cork==0.12.0a2
git+git://github.com/FedericoCeratto/bottle-cork.git@557bc6cc249ea8dcb7b76d85bde116527eb41223#egg=bottle-cork
beautifulsoup4
Beaker
pillow

构建似乎有效。

回答我的其他问题:

2) 是的,保持 Python 应用程序中的导入语句。

3) requirements.txt 中的所有软件包安装似乎无需显式安装即可继续:

python2.7-dev
libxml2-dev
libxslt1-dev
apache2-dev
zlib1g-dev
libjpeg8-dev

4) 是的,requirements.txt 位于 repo 的顶级目录中。