web-dev-qa-db-ja.com

PyCharm-環境変数を自動的に設定します

私はvirtualenv、virtualenvwrapper、PyCharmを使用しています。 「export」コマンドを実行して各プロジェクトに必要な環境変数を適用するpostactivateスクリプトがあるので、「workon X」を実行すると、変数の準備が整います。

ただし、PyCharmを使用している場合、(「起動前」設定で)postactivateファイルを実行しても、これらの変数を使用できないようです。実行/デバッグ構成ウィンドウに各環境変数を手動で入力する必要があります。

PyCharm内で環境変数を自動的に設定する方法はありますか?または、新しいプロジェクトや変数の変更ごとに手動でこれを行う必要がありますか?

ありがとう。

22
asafge

私も同じ問題を抱えています。 UIを介して環境変数を維持しようとするのは、面倒な作業です。 pycharmは起動時にbash_profileを介してenv変数を1回だけロードするようです。その後、exportを実行するか、before jobを実行して変更しようとしますbash_profileは役に立たない

pycharmチームはいつこれを改善するのだろうか

私の場合、/ etc/environmentを変更して仮想マシンを再起動できるため、リモートインタープリターの回避策はローカルよりもうまく機能します。

ローカル通訳の場合、私ができる最善の解決策は次のとおりです。

1。テンプレートの作成構成テンプレートの実行/デバッグとクローン作成

環境変数が安定している場合、これは、同じ環境変数を再入力せずにdiffconfigを作成するための簡単なソリューションです。

  1. テンプレート設定を作成し、必要な環境変数を入力します。
  2. それらを複製する

写真を参照

2。スクリプトを変更します

メインスクリプトでos.environ [] = valueを使用してコードを追加するかもしれませんが、これはしたくありません。製品コードが変更され、誤ってコミットされる可能性があります。

誰かがより良い答えを与えることができることを願っています、私はこの問題にあまりにも多くの時間を費やしてきました...

4
Freddy Tan

私は今日これを行う方法を探していて、同じ質問の別のバリエーション(以下にリンク)に出くわし、この質問にも役立つようですが、解決策をそこに残しました。コード自体に環境変数をロードする処理を行っています。

これは主に開発中の問題であることを考えると、私はこのアプローチを好みます。

  1. ターミナルを開く

  2. Virtualenvwrapperが使用されていると仮定して、プロジェクトのvirtualenvをアクティブ化します。これにより、フックが実行され、環境変数が設定されます(たとえば、postactivateフックで設定していると仮定します)。

  3. このコマンドラインからPyCharmを起動します。

その後、Pycharmは環境変数にアクセスできるようになります。おそらく、PyCharmプロセスがシェルの子であることに関係しているためです。

https://stackoverflow.com/a/30374246/4924748

3
Antero Ortiz

別のハッキングソリューションですが、私の目的にはそれで十分な単純なソリューションです。これはUbuntu(そしておそらくMint)linuxに特有ですが、Macにも役立つ可能性があることに注意してください。

私がしていることは、必要な環境変数を調達する行を起動スクリプト(pycharm.sh)に追加することです(私の場合、コマンドラインで実行されるスクリプトに影響を与えない、Pycharmのcx_Oracleで問題が発生していました)。ホームディレクトリにある.env_localなどのファイルに環境変数を保持している場合は、pycharm.shに次の行を追加できます。 $ HOME/.env_local

私が特に「。」を使用する理由に関して、ここで注意すべき2つの重要な点。 (「ソース」ではなく)そして、bashでは効果的に交換可能な「〜」ではなく「$ HOME」を使用する理由。 1)pycharm.shが#!/ bin/shを使用していることに気付き、Ubuntuではshが(bashではなく)ダッシュを指すようになったことに気づきました。 2)ダッシュは、結局のところ、ソース「組み込み」を持っておらず、〜ホームディレクトリに解決されません。

また、PyCharmをアップグレードするたびに、pycharm.shファイルを変更する必要があるため、これは理想的ではないことも認識しています。それでも、実行構成を管理する必要はありません。それが役に立てば幸い。

1
noisy_cats

OK、より良い回避策を見つけました!

1.virtualenvにファブリックをインストールします

ターミナルに行き、
1。 workonあなたのvirtualenv名
2。ピップインストールファブリック

2.fabric.pyを追加します

pythonファイルを追加し、プロジェクトルートの下に「fabric.py」という名前を付けます。
以下のコードを過ぎて、
そしてパス変数を独自のものに変更します

from fabric.api import *
import os

path_to_your_export_script = '/Users/freddyTan/workspace/test.sh'
# here is where you put your virtualenvwrapper environment export script
# could be .bash_profile or .bashrc depend on how you setup your vertualenvwrapper
path_to_your_bash_file = '/Users/freddyTan/.bash_profile'

def run_python(py_path, virtualenv_path):
    # get virtualenv folder, parent of bin
    virtualenv_path = os.path.dirname(virtualenv_path)
    # get virtualenv name
    virtualenv_name = os.path.basename(virtualenv_path)

with hide('running'), settings(warn_only=True):
    with prefix('source %s' % path_to_your_export_script):
        with prefix('source %s' % path_to_your_bash_file):
            with prefix('workon %s' % virtualenv_name):
                local('python %s' % py_path)

3.外部ツールを追加します

に行く
設定->外部ツール->追加ボタンをクリック
そして以下の情報を記入してください

Name: whatever
Group: whatever
Program: "path to your virtualenv, should be under '$HOME/.virtualenvs' by default"/bin/fab
Parameter: run_python:py_path=$FilePath$,virtualenv_path=$PyInterpreterDirectory$
Working directory: $ProjectFileDir$

スクリーンショット

ウォラ、それを実行します

main.pyに移動し、右クリックして外部名(「whatever」など)を見つけてクリックします
この外部ツールのショートカットを追加することもできます
スクリーンショット

欠点

ファブリックはpython 3)をサポートしていないため、これはpython 2.xでのみ機能します

0
Freddy Tan