🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

3回答

4377閲覧

centosの環境変数が取得できない Python3

ssh_u

総合スコア34

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2019/09/12 14:20

編集2019/09/15 06:09

前提・実現したいこと

centosに設定している環境変数を取得したいです。

発生している問題・エラーメッセージ

KeyError: 'HOGE'

該当のソースコード

Python3

1import os 2 3os.environ['HOGE']

試したこと

最初は環境変数を取得するPythonファイルが取得権限がなくエラーを吐いていると思いchmodで777を付与 -> ダメ
次にos.py(/usr/local/lib/python)の取得する権限がなくエラーを吐いていると思いこちらにも777を付与 -> ダメ

export -pで確かに設定していることは確認済み

他に何が原因として考えられるでしょうか?
ご教授お願いします。

補足情報(FW/ツールのバージョンなど)

python 3.6
centos 7


すみません、詳しく書くべきでした。

今CentOSでFlaskを使ってアプリケーションを作成しています。
それでMariaDBを使っているのですが、DBに接続するために必要な情報を環境変数に設定しています。
それが今読み込めない状態です。

DBというclassを作成し__init__で以下を行っているときに読み込めていません

self.conn = mysql.connector.connent(user=os.environ['DB_USER'], password=os.environ['DB_PASS'], host=os.environ['DB_HOST'], database=os.environ['DB_DB'], port=os.environ['DB_PORT'])

__init__内で教えていただいたprint(os.environ)を行ったところ設定されていませんでした。

すみません、こちらの情報をお伝えするべきでした。
この情報で何かわかることはありますでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasima20

2019/09/14 12:02

print(os.environ) でなんか分かるかも?
takasima20

2019/09/15 08:34

回答者が知りたいのは、「どのタイミングで」環境変数を設定していて、「どのタイミングで」Pythonを動かしているか? って点です。
takasima20

2019/09/15 08:38

っていうか、Flask てことは Webサーバーで動かしてるってことスか? なら、Webサーバー起動時に設定するよう仕込んであげないと…
guest

回答3

0

自己解決

index.wsgiで設定しました。
そしたら読み込めるようになりました

投稿2019/09/15 10:29

ssh_u

総合スコア34

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

MacOSなので環境が違いますが、基本は同じ動きだと思うのですが以下のようになりませんか?
Python2/3ともおなじでした。

Terminal

1nandymak:python-getting-started nandymak$ export HOGE=AAAAAA 2nandymak:python-getting-started nandymak$ export -p | grep HOGE 3declare -x HOGE="AAAAAA" 4nandymak:python-getting-started nandymak$ python 5Python 2.7.10 (default, Feb 22 2019, 21:55:15) 6[GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.37.14)] on darwin 7Type "help", "copyright", "credits" or "license" for more information. 8>>> import os 9>>> 10>>> os.environ['HOGE'] 11'AAAAAA' 12>>> 13 14nandymak:python-getting-started nandymak$ python3 15Python 3.7.4 (default, Jul 9 2019, 18:13:23) 16[Clang 10.0.1 (clang-1001.0.46.4)] on darwin 17Type "help", "copyright", "credits" or "license" for more information. 18>>> import os 19>>> os.environ['HOGE'] 20'AAAAAA' 21>>>

export -pで確かに設定していることは確認済み

疑うわけではありませんが、どう確認したかも教えてください。

投稿2019/09/12 21:48

nandymak

総合スコア799

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

単に、HOGEという環境変数が無いということです。

export -pで確かに設定していることは確認済み

別の端末で見ているとか?

投稿2019/09/12 14:27

otn

総合スコア85893

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ssh_u

2019/09/12 14:47

Azure上で動いているcentosにsshで接続している感じです
otn

2019/09/12 14:59

> Azure上で動いているcentosにsshで接続している感じです どこで動いているかは、関係ないです。
otn

2019/09/12 16:42

環境変数は、プロセスごとの固有データだということを理解していますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問