问题解释:
的值$OPENSHIFT_DATA_DIR
在您的本地计算机上得到解析。很可能它将为空,因为您的计算机上未设置此变量。
无法读取内置服务器端环境变量的值,例如$OPENSHIFT_DATA_DIR
. 只会公开外部设置的变量。您可以通过以下示例进行尝试:
user@machine:~$ rhc env list
user@machine:~$ rhc env set VARIABLE="file"
Setting environment variable(s) ... done
user@machine:~$ rhc env list
VARIABLE=file
user@machine:~$ rhc env unset VARIABLE
Removing environment variables is a destructive operation that may result in loss of data.
VARIABLE
Are you sure you wish to remove the environment variable(s) above from application 'yourapp'?(yes|no):yes
Removing environment variable(s) ... done
user@machine:~$ rhc env list
解决方案:
设置两个环境变量并在程序代码中使用它们来构建路径:
1.定义第一个环境变量,定义内置环境变量读取
user@machine:~$ rhc env set MY_ENV_VAR_FOR_BASE_DIR="OPENSHIFT_DATA_DIR"
Setting environment variable(s) ... done
2. 定义第二个环境变量以在给定目录中指定您的文件夹
user@machine:~$ rhc env set MY_TARGET_FOLDER="file"
Setting environment variable(s) ... done
3. 在您的代码(python 示例)中构建您的路径
(InteractiveConsole)
>>> import os
>>> os.environ.get("MY_ENV_VAR_FOR_BASE_DIR")
'OPENSHIFT_DATA_DIR'
>>> os.environ.get("OPENSHIFT_DATA_DIR")
'/var/lib/openshift/your_user_dir/app-root/data/'
>>> os.environ.get("MY_TARGET_FOLDER")
'file'
>>> os.path.join(os.environ.get(os.environ.get("MY_ENV_VAR_FOR_BASE_DIR")), os.environ.get("MY_TARGET_FOLDER"))
'/var/lib/openshift/your_user_dir/app-root/data/file'