質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

3回答

1981閲覧

pythonについて

tim

総合スコア6

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/07/31 00:15

編集2018/07/31 00:19

前提・実現したいこと

BOTを開発しています。

発生している課題

プログラムを実行したときにコマンド等でAPIの設定をしたいのですが、pythonにそこまで詳しくないため、どなたか可能でしたらご教示頂ければ幸いです。実行ファイルのソースコード内に、APIのSECRETなどの情報をあらかじめ記述することなく、プログラムを起動してから設定することが出来るようにしたいです。

該当のソースコード

python

1```ソースコード 2 3API_KEY = '' 4API_SECRET = '' 5 6### 試したこと 7 8 9 10### 補足情報(FW/ツールのバージョンなど) 11 12あまり詳しくなく、経験もあまりないため、どなたかご教示を頂けると大変ありがたいです。よろしくお願い致します。

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

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

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

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

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

guest

回答3

0

質問の内容は「コード内にAPIキーを直接書かないように隠しつつプログラムを実行できるようにするにはどうすればよいのか」ということでよろしいでしょうか。

それならばいくつか方法はありますが、dotenvを利用するのが手軽で簡潔で理解しやすいのではないかと思います。
dotenvは.envというファイルにAPIキーなどの環境変数を書き、それを読み込むという感じのものです。

Pythonでdotenvを利用するにはまず
pip install python-dotenv
でインストールします。

つぎに、.envファイルを作成します。
(たしかWindowsのエクスプローラーからだと.から始まるファイルの作成はできなかったと思いますが、そこは調べてください)
.envファイルには以下のようにAPIキーを記述します。

API_KEY=yourapikey

この.envファイルに記述したAPIキーを読み込むには

python

1import os 2from dotenv import load_dotenv 3 4dotenv_path = os.path.join(os.path.dirname(__file__), '.env') 5load_dotenv(dotenv_path) 6 7API_KEY = os.environ.get("API_KEY")

と書けばOKです。

以下の記事が参考になるかと思います。
https://qiita.com/hedgehoCrow/items/2fd56ebea463e7fc0f5b

投稿2018/07/31 00:26

crimnut

総合スコア380

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

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

tim

2018/07/31 00:50

ありがとうございます。試してみます!
tim

2018/07/31 01:00

記事等を読みました。もし、隠すということでしたら、隠したいのではなくて、アカウントを変えてAPIキーが変わっても実行ファイル等のソースコードをいじることなく、プログラムを実行するだけで、コマンドあるいは何らかの方法によって、APIキーの設定を行いたいのですが、どのような方法が考えられますでしょうか? もしよければ、ご教示いただけるとありがたいです。ありがとうございます。
crimnut

2018/07/31 01:48

それならば、argparseとかでコマンドラインツールにすればよいかと。アカウント(APIキー)の追加を受け付けるオプションと、アカウントを指定してbotを起動するオプションをそれぞれ作成するという感じですかね。追加されたAPIはとりあえずは.envファイルに書き込むようにしておけばいいと思います。
guest

0

https://www.tsuyukimakoto.com/blog/2013/12/02/hide_password/

秘匿することが目的ではなく、ファイルに書きたくないだけなら環境変数から取得するのが楽です。

投稿2018/07/31 01:48

mkgrei

総合スコア8560

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

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

0

プログラムを起動してからと言うことだと、

Python

1API_KEY = input("API_KEY: ") 2API_SECRET = input("API_SECRET: ")

と起動してからキーボードで入力するのでしょうか。

プログラム起動時に引数('sys.argv`)で与えることも出来ますが、ファイルに書かない手打ち前提だと、上記の方法に比べてメリット無いです。

投稿2018/07/31 00:23

編集2018/07/31 00:31
otn

総合スコア84555

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

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

otn

2018/07/31 00:33 編集

ああ、質問を勘違いしていたかも知れません。 「一切ファイルに書かない」じゃなくて「実行ファイルのソースコード内に書かない」ですね。 であれば、別のファイルに書いて読み込むだけでもいいでしょう。「プログラム起動してから」じゃなくなりますが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問