簡體   English   中英

如何使用python 2.7從特定文件中讀取環境變量

[英]How to read environment variables from specific file with python 2.7

為了聲明一些環境變量然后使用它們調用一些 python 腳本,我創建了一個 myfile.sh 文件,它是由 bash myfile.sh 運行的。 但是,我有很多腳本應該讀取這些環境變量,但無法為每個腳本創建一個 myfile.sh!

所以我的想法是創建一個環境變量文件並通過我的每個 python 腳本訪問它。

所以我的問題是,如何使用 python 2.7 訪問這樣的文件?

一個最相關的問題如下: os.environ 從哪里讀取環境變量?

需要注意的是,我無法安裝額外的庫,例如 dotenv。 因此,如果可能,解決方案應該基於標准庫。

任何幫助將不勝感激!

我必須創建一個應該由我的腳本訪問的新環境變量文件。

這不是它的工作原理。 您需要的是在調用腳本之前從文件中設置環境變量:

我的環境文件

export DB_USER="foo"
export DB_PWD="bar"
export DB_NAME="mydb"
# etc

腳本文件

import os

DB_USER = os.getenv("DB_USER")
DB_PWD = os.getenv("DB_PWD")
DB_NAME = os.getenv("DB_NAME")

# etc

然后

$ source /path/to/myenv.sh
$ python /path/to/myscript.py

大多數情況下,您希望將以上兩行代碼包含在一個 shell 腳本中,以使系統管理員的工作更輕松。

編輯:如果您希望這些 env vars 被“自動”設置,您總是可以從 .bashrc 或類似的地方獲取它們 - 但這是一個系統管理員問題,而不是一個編程問題。

現在的問題是:你真的需要在這里使用環境變量嗎? 您也可以使用 python 設置文件 - 一個只定義這些變量的普通 Python 模塊,即:

我的設置.py

DB_USER = "foo"
DB_PWD = "bar"
# etc

並確保包含此腳本的目錄的路徑在您的 $PYTHONPATH 中。 然后你的腳本只需要導入它(就像它們導入任何其他模塊一樣),你就完成了。

錦上添花:您甚至可以混合兩種解決方案,讓您的設置模塊查找環境變量並提供默認值,即:

我的設置.py

import os
DB_USER = os.getenv("DB_USER", "foo")
DB_PWD = os.getenv("DB_PWD", "bar")
# etc

從命令行顯示環境

  • linux: export
  • 窗戶: set

設置環境變量

  • linux: export foo=bar
  • 窗口: set foo=bar

打印環境變量:

  • linux: echo $foo
  • 窗口: echo %foo%

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM