openshift上的Flask Project根目录

时间:2015-06-21 13:51:24

标签: python flask openshift

我开始使用烧瓶,并且我已将我的应用部署到openshift。

我的应用代码:

def get_users():
    f = open('./users.txt')
    ....

我跑的时候:

$ rhc tail flaskpq

我明白了:

  

[Sun Jun 21 09:05:20 2015] [错误] [客户端127.2.78.1] f =   打开(' ./ user.txt')[Sun Jun 21 09:05:20 2015] [错误] [客户端   127.2.78.1] IOError:[Errno 2]没有这样的文件或目录:' ./ users.txt'

我怀疑我在项目根目录中对users.txt的相对引用在部署到openshift时不再有效。它在win7上本地工作正常。解决这个问题的最佳方法是什么?

3 个答案:

答案 0 :(得分:2)

你应该可以做这样的事情来获取应用程序的目录:

user_file = os.path.abspath(os.path.join(os.path.dirname(__file__), "./users.txt"))

这是我在heroku上做的事情。不要忘记____file___将是文件所在的目录。这可能是也可能不是您的应用程序根文件夹。

答案 1 :(得分:1)

通常不应该用纯字符串编写路径。跨平台工作时这很危险。请使用osos.path中的功能。

答案 2 :(得分:1)

别忘了在openshift上你只能在$OPENSHIFT_DATA_DIR下创建/写文件,所以我个人使用以下方法。

DATA_DIR = os.environ.get('OPENSHIFT_DATA_DIR', ".")
def get_users():
    f = open(os.path.join(DATA_DIR,'users.txt')

如果需要,我会使用rhc scp复制文件以更正位置。