2016-08-17 5 views
-3

私は、setup.pyからpythonアプリケーションをインストールし、それをvirtualenv内でインストールしていると仮定します。また、APIキー/ URIなどのアプリケーションの機密性の高い設定を提供する必要があると仮定します。私は正常に実行される前に修正するアプリのユーザーのデフォルトの設定ファイルをインストールすることができるようにしたいと考えていvirtualenvで設定ファイルのインストールを処理するPythonの方法は?

/opt/appname/venv 

私のvirtualenvのは、次のようなパスにあるかもしれません。問題は、私はvirtualenvの中だ場合、setup.py/setuptoolsのは本当に限り私としてグローバルパス(にインストール処理しない、ある

/etc/appname/config.sample 

デフォルトの例では、に取り付けられている場合があります知っている)。

この非常に一般的なシナリオを処理するにはどのような最善の方法がありますか?

+0

あなたの質問は多少曖昧です。どのようなグローバルな道を話しているのですか?具体的な例が非常に便利です。あなたの質問を編集し、この情報を提供してください。 – martineau

+0

私はそれがまったく曖昧だとは思わない。具体的な例はpythonicスタイルの問題なので不可能です。 –

+0

代替インストールのオプションについて考えましたか? https://docs.python.org/3/install/index.html#alternate-installation – creativeChips

答えて

1

configファイルが仮想環境変数を変更すると仮定して仮想環境の起動前に変更する必要がある場合は、./venv/binにあるactivate bashスクリプトを修正してこれを行うことができます。あなたはactivateの最後の行は可能性があり、設定ファイルからグローバルパスを追加したいのであれば:

MY_GLOBAL_PATH=<program that looks into config file and returns path> 

次に仮想的環境では、それはいつものように活性化することが可能になります。

source ./venv/bin/activate 
+0

は問題を解決しません。 –

+0

私はPythonアプリケーションを可能な限りファイルシステム(設定ファイルを含む)について無知なままにしておき、代わりに環境変数を使用するのが好きです。仮想envを使用し、 'os.getenv'メソッドを使用するとき、これは非常にクリーンなパラダイムであることがわかります。私は、プロジェクトディレクトリ内のファイルを見つけるためにpyvenvによって作成された 'VIRTUAL_ENV'変数を使用するか、プロジェクトディレクトリ以外の設定ファイルの場所を含む追加のbash変数スクリプトを使用してこれを行います。より少ないbashともっと多くのPythonを使いたいなら、 'os'モジュールを使って環境変数を設定して取得できます。 –

+0

cfmでは、設定ファイルをきれいに配備し、一元的に管理することができます。APIキーを動的に/安全にストーリー化するための暗号化されたデータバッグ/ボールトのようなユーティリティが特に有用である。環境変数は、名前空間の競合がより容易になる可能性があるので危険である可能性がある。私見では。 –

-1

はあなたを持っていますPythonのsite-specific configurationオプションを使って試しましたか?私には.pthのファイルがあり、sitecustomize.pyというファイルが役に立ちそうです。
参照:Accepted answer on "Using .pth files"

「グローバルパス」のような具体的な例がなければ、実行可能なことについてより詳細な情報を提供することは難しいです。これは、ある程度一般的なスタイルの質問ですが。

関連する問題