在Python中启动项目时,我想将一些环境变量保存在一个名为的environment_variables
文件中,并在bashrc中将此文件作为源。
该文件如下所示:
username=$(whoami)
# project root path
export PROJECT_DIR='/home/'$username'/nuclei_segmentation/'
# project data path
export DATA_DIR=$PROJECT_DIR"data/"
# location of models
export MODEL_DIR=$PROJECT_DIR"models/"
# project output data
export OUTPUT_DIR=$PROJECT_DIR"output/"
我想更改PROJECT_DIR
路径,使其与平台/名称无关。因此,此environment_variables
文件将始终位于项目的根目录中,我想将其设置PROJECT_DIR
为始终是environment_variables
文件的位置。
我以为可以做到这一点,PWD
但是当从bashrc调用时会产生错误,我还想到了一种使用find从根目录中搜索文件的解决方案,但这似乎很复杂,认为必须有更好的方法?
如果我完全了解您要进行的操作,那么我的建议是
更确切地说,您真正需要的只是一个用于命名项目根目录的变量。如果预期文件位于当前目录中,则不需要设置它。
export NUC_SEG_DIR=$HOME/nuclei_segmentation
在您的Python代码中,输入合理的默认值。在这种情况下,期望os.path.join(os.environ['NUC_SEG_DIR'], 'data')
指向您的data
目录等。如果用户要覆盖此目录,则使用符号链接就足够了。确保在代码中对它进行了参数设置,以便将来要使其可配置时,可以很容易地在一个地方覆盖它。也许像
def nuc_seg(root_dir=os.environ['NUC_SEG_DIR'], data_dir='./data', model_dir='./models', output_dir='./output'):
if root_dir == '':
root_dir='.'
... your code here
也许稍后再使您的命令行界面让用户通过命令行选项或配置文件覆盖这些值。
再次,不要求用户编辑他们.bash_profile
或类似的用户-如果他们想在不同的目录中运行多个实验,该怎么办?他们可以弄清楚如何使环境变量永久化,或者如果不希望您的用户熟悉Shell的基础知识,甚至可以将其记录为一个选项。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句