OpenShift中缺少环境变量

时间:2017-05-17 14:25:27

标签: python-2.7 websocket openshift

我正在尝试在Openshift中设置一个Python 2.7项目。目标是使用Tornado Websockets。我已经尝试了很多例子,但是我仍然坚持使用示例中显示的一些缺少的环境变量。

我当前的app.py:

import imp
import os

try:
   zvirtenv = os.path.join(os.environ['OPENSHIFT_PYTHON_DIR'],
                       'virtenv', 'bin', 'activate_this.py')
                        execfile(zvirtenv, dict(__file__ = zvirtenv) )
except IOError:
   pass

if __name__ == '__main__':
   ip   = os.environ['OPENSHIFT_PYTHON_IP']
   port = int(os.environ['OPENSHIFT_PYTHON_PORT'])
   app = imp.load_source('application', 'main.py')

   app.application.listen(port , ip)
   app.ioloop.IOLoop.instance().start()

我的安装需要:

  install_requires=['tornado', 'requests', 'beautifulsoup4']

这会导致以下错误:

---> Running application from Python script (app.py) ...
Traceback (most recent call last):
  File "app.py", line 14, in <module>
    zvirtenv = os.path.join(os.environ['OPENSHIFT_PYTHON_DIR'],
  File "/opt/app-root/lib64/python2.7/UserDict.py", line 40, in __getitem__
    raise KeyError(key)
KeyError: 'OPENSHIFT_PYTHON_DIR'

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

您正在寻找使用OpenShift 2时设置的环境变量,但正在使用OpenShift 3.在OpenShift 3下,您无需激活Python虚拟环境,它就是为您完成的。您的app.py应该监听所有接口和端口8080.只要使用默认的Python S2I构建器,该地址就不会改变,因此环境变量不会用于传递它。