web-dev-qa-db-ja.com

PyCharmのターミナル内でvirtualenvをアクティブにするにはどうすればよいですか?

PyCharmをセットアップし、virtual envコマンドを使用して(またはPyCharmで直接)virtualenvを作成し、その環境をインタープリターとしてアクティブにしました。すべてがうまく機能しています。

ただし、「ツール、ターミナルを開く」を使用してターミナルを開くと、提供されるシェルプロンプトはnotを使用して仮想環境を使用します。それを有効にするには、そのターミナル内でsource ~/envs/someenv/bin/activateを使用する必要があります。

別の方法は、シェルで環境をアクティブにし、その環境からPyCharmを実行することです。これは「実行可能」ですが、かなりugいため、PyCharmから環境またはプロジェクトを切り替えると大きな問題が発生します。現在、完全に間違った環境を使用しています。

「ツール、ターミナルを開く」で仮想環境を自動的にアクティブ化する他の、もっと簡単な方法はありますか?

93
Chris Cogdon

Windowsユーザーの場合、PyCharmおよびWindows環境で仮想環境を使用する場合、cmd.exeに/ kパラメーターを使用して、仮想環境を自動的に設定できます。

[設定]、[ターミナル]、[デフォルトシェル]に移動し、/K <path-to-your-activate.bat>を追加します。

以前の回答についてコメントする評判はないので、この修正版を投稿します。これにより、時間を大幅に節約できます。

更新:

注:Pycharmは仮想環境を直接サポートするようになったため、うまく機能しているようです。そのため、回避策はもう必要ありません。

38
PrivateUser22

Windowsユーザーの場合:仮想環境でPyCharmを使用する場合、/Kパラメーターをcmd.exeに使用して、仮想環境を自動的に設定できます。

PyCharm 3または4:SettingsTerminalDefault Shellを追加し、/K <path-to-your-activate.bat>を追加します。

PyCharm 5:SettingsToolsTerminal、および/K <path-to-your-activate.bat>Shell pathに追加します。

PyCharm 2016.1または2016.2:SettingsToolsTerminal、および""/K <path-to-your-activate.bat>""Shell pathに追加して追加します(引用に注意してください)。また、cmd.exeの周りに引用符を追加すると、次の結果になります。

"cmd.exe" /k ""C:\mypath\my-venv\Scripts\activate.bat""

37
SaeX

ピーターと実験からの回答に基づいて、次の問題を解決する優れた「一般的な解決策」を思いつきました。

  • ログインシェルの動作を復元します。 PyCharmは通常、ログインシェルを実行しますが、-rcfileはこの問題を停止しました。スクリプトは--rcfileを引き続き使用しますが、ログインシェルの呼び出し動作をエミュレートしようとします。
  • 環境ごとにrcfileを作成する必要がなくなります
  • 環境を変更した場合にプロジェクト設定を更新する必要がなくなります。

このスクリプトをどこかのbinディレクトリにドロップします。例えば。 〜/ bin/pycharmactivate

if [ -r "/etc/profile" ] ; then . /etc/profile ; fi
if [ -r "~/.bash_profile" ] ; then
    . ~/.bash_profile
Elif [ -r "~/.bash_login" ] ; then
    . ~/.bash_login
Elif [ -r "~/.profile" ] ; then
    . ~/.profile
fi
ACTIVATERC=`cat .idea/workspace.xml | Perl -n -e 'print "\$1/bin/activate" if m:option name="SDK_HOME" value="\\\$USER_HOME\\\$(.*)/bin/python":'`
if [ -n "$ACTIVATERC" ] ; then . "$HOME/$ACTIVATERC" ; else echo "Could not find virtualenv from PyCharm" ; fi

次に、PyCharmのシェルパスを次のように設定します。

/bin/bash --rcfile ~/bin/pycharmactivate
7
Chris Cogdon

PyCharm 4にはIDEにvirtualenvが統合されています。プロジェクトインタープリターを選択するときに、virtualenvを作成、追加、または選択できます。構成済みのプロジェクトインタープリターで実行される「Pythonコンソール」を追加しました。

詳細はこちら

6
pferate

クリスのおかげで、あなたのスクリプトはいくつかのプロジェクトで機能しましたが、すべてが私のマシンでは機能しませんでした。ここに私が書いたスクリプトがありますが、誰でもそれが役に立つと思います。

#Stored in ~/.pycharmrc 

ACTIVATERC=$(python -c 'import re
import os
from glob import glob

try:
  #sets Current Working Directory to _the_projects .idea folder
  os.chdir(os.getcwd()+"/.idea") 

  #gets every file in the cwd and sets _the_projects iml file
  for file in glob("*"): 
    if re.match("(.*).iml", file):
      project_iml_file = file

  #gets _the_virtual_env for _the_project
  for line in open(project_iml_file):
    env_name = re.findall("~/(.*)\" jdkType", line.strip())
    # created or changed a virtual_env after project creation? this will be true
    if env_name:
      print env_name[0] + "/bin/activate"
      break

    inherited = re.findall("type=\"inheritedJdk\"", line.strip())
    # set a virtual_env during project creation? this will be true
    if inherited:
      break

  # find _the_virtual_env in misc.xml
  if inherited:
    for line in open("misc.xml").readlines():
      env_at_project_creation = re.findall("\~/(.*)\" project-jdk", line.strip())
      if env_at_project_creation:
        print env_at_project_creation[0] + "/bin/activate"
        break
finally:
  pass
')

if [ "$ACTIVATERC" ] ; then . "$HOME/$ACTIVATERC" ; fi
6
user1928626

Windowsバージョンを使用している場合は、非常に簡単です。既に仮想環境がある場合は、そのフォルダーに移動するだけで、Scriptsフォルダー内でactivate.batを見つけます。 fullパスをコピーしてpycharmのターミナルに貼り付け、Enterを押して完了です!

新しい仮想環境を作成する必要がある場合:

[ファイル]> [設定]に移動し、project interpreterを検索して開き、歯車ボタンをクリックして、必要な場所に環境を作成し、最初の段落に従います。

The Gear!

3
AmiNadimi

MacではPyCharm => Preferences ... => Tools => Terminal => Activate virtualenvで、デフォルトで有効になっているはずです。

3
M3RS

Pycharmactivateという名前のスクリプトをホームディレクトリに追加しました。 PyCharm(4.0.1)File> Settings> Tools> Terminal> Shell path to/bin/bash --rcfile〜/ pycharmactivateの値を設定します。異なるプロジェクトとvirtualenvディレクトリ/名前がある場合の最善の解決策ではないかもしれませんが、私にとってはうまくいきます。このスクリプトには次の3行が含まれ、virtualenvの名前がプロジェクトディレクトリと同じであると想定しています。

source ~/.bashrc
projectdir=${PWD##*/}
source ~/.virtualenvs/$projectdir/bin/activate
2
user4304103

Peterの答えに続いて、ここにMac版の.pycharmrcファイルがあります:

source /etc/profile
source ~/.bash_profile
source  <venv_dir>/bin/activate

2

上記のすべての答えを見てきましたが、どれも私にとって十分にエレガントではありません。 Pycharm 2017.1.3(私のコンピューター)で最も簡単な方法は、Settings->Tools->Terminalを開き、Shell integrationおよびActivate virtualenvオプションをチェックすることです。

image

2
WQY

これは私がやっていることです:ソースコードfoldeにactivate_env.bat(Linuxではwindows、maybe .sh)ファイルを作成します:

/env_yourenvlocate/scripts/activate.bat

および別のファイルdeactivate_env.bat:

/env_yourenvlocate/scripts/deactivate.bat

ターミナルウィンドウを開くたびに、batファイルを実行してvirtualenvをアクティブ化/非アクティブ化するだけで、ソースコードのパスにとどまり、パスを変更する必要はありません。

E:\Projects\Django_study\src>active_env.bat

E:\Projects\Django_study\src>../env_Django_study/scripts/activate.bat
(env_Django_study) E:\Projects\Django_study\src>



(env_Django_study) E:\Projects\Django_study\src>deactive_env.bat

(env_Django_study)E:\Projects\Django_study\src>../env_Django_study/scripts/deactivate.bat
E:\Projects\Django_study\src>
1
phiree

Windows 7マシンで動作するソリューションがあります。

PyCharmのターミナルは、WindowsのPATH変数をロードし、そのPATH内で最初に見つかったPythonのバージョンを使用するcmd.exeを実行した結果だと思います。この変数を編集するには、右クリックマイコンピューター->プロパティ- ->システムの詳細設定->詳細タブ->環境変数...ボタン。 システム変数セクション内で、PATH変数を選択して編集します。

PATHbefore編集の関連部分は次のとおりです。

C:\ Python27 \;
C:\ Python27\Lib\site-packages\pip \;
C:\ Python27\Scripts;
C:\ Python27\Lib\site-packages\Django\bin;

...およびafterPATHの編集(現在3行のみ):

C:[project_path]\virtualenv-Py2.7_Dj1.7\Lib\site-packages\pip;
C:[project_path]\virtualenvs\virtualenv-Py2.7_Dj1.7\Scripts;
C:[project_path]\virtualenvs\virtualenv-Py2.7_Dj1.7\Lib\site-packages\Django\bin;

これをテストするには、new windowsターミナルを開きます(Start-> cmdと入力してヒットします Enter)、仮想環境を使用しているかどうかを確認します。それが機能する場合、PyCharmを再起動し、PyCharmのターミナルでテストします。

1
user2684827

Pycharm 2016.1.4v以降を使用する場合は、"default path" /K "<path-to-your-activate.bat>"を使用する必要があります。引用符を忘れないでください

1
Koblikov Mihail

Solution for WSL(Windows上のUbuntu)

WSL(Windows上のUbuntu)を使用している場合は、pycharmでターミナルとしてbashを開き、linux virtualenvをアクティブにすることもできます。

Peter Gibsonの回答で説明されているような.pycharmrcファイルを使用します。 .pycharmrcファイルをホームディレクトリに追加し、次のコンテンツを追加します。

source ~/.bashrc
source ~/path_to_virtualenv/bin/activate

PycharmFile> Settings> Tools> Terminalで、次の「シェルパス」を追加します。

"C:/Windows/system32/bash.exe" -c "bash --rcfile ~/.pycharmrc"


プロジェクト固有のvirtualenv

.pycharmrcのvirtualenvへのパスは絶対パスである必要はありません。プロジェクトディレクトリからの相対パスを設定することにより、プロジェクト固有のvirtualenvを設定できます。私のvirtualenvは常にプロジェクトディレクトリの下の「venv」フォルダにあるため、.pycharmrcファイルは次のようになります。

 source〜/ .bashrc 
ソース〜/ pycharmvenv/bin/activate #absolute path 
 source ./venv/bin/activate #relative path 


ボーナス:sshトンネルを自動的に開いて、virtualenvをプロジェクトインタープリターとして接続します

.pycharmrcファイルに次を追加します。

if [ $(ps -aux | grep -c 'ssh') -lt 2 ]; then
    Sudo service ssh start 
fi

これにより、sshトンネルがすでに開いているかどうかがチェックされ、そうでない場合は開かれます。 PycharmのFile-> Settings-> Project-> Project Interpreterで、次の設定で新しいリモートインタープリターを追加します。

+ -------------------------- + ---------------------- ----------- + ------- + ---- + 
 |名前:| <通訳名> | | | 
 |選択してください| 「SSHクレデンシャル」| | | 
 |ホスト:| 127.0.0.1 |ポート:| 22 | 
 |ユーザー:| <Linuxユーザー名> | | | 
 |認証タイプ:| 「パスワード」| | | 
 |パスワード:| <Linuxパスワード> | | | 
 | Pythonインタープリターパス:| <virtualenvへのLinuxパス> | | | 
 | Pythonヘルパーパス:| <自動的に設定> | | | 
 + -------------------------- + ---------------- ----------------- + ------- + ---- +

これで、プロジェクトを開くと、bashがvirtualenvで自動的に起動し、sshトンネルが開き、pycharmがvirtualenvをリモートインタープリターとして接続します。

警告:Windowsの最後の更新は、起動時にSshBrokerおよびSshProxyサービスを自動的に開始します。これらは、LinuxからWindowsへのsshトンネルをブロックします。これらのサービスは、タスクマネージャー->サービスで停止できます。その後、すべてが再び機能します。

0
Robbe

もう1つの方法は、 virtualenvwrapper を使用して仮想環境を管理することです。 virtualenvwrapper スクリプトがアクティブ化される を使用すると、pycharmがそれを使用できるようになり、pycharmコンソールから簡単なworkonコマンドが使用可能になり、使用可能な仮想環境が表示されます。

kevin@debian:~/Development/Django-tutorial$ workon
Django-tutorial
FlaskHF
SQLAlchemy
themarkdownapp
kevin@debian:~/Development/Django-tutorial$ workon Django-tutorial
(Django-tutorial)kevin@debian:~/Development/Django-tutorial$ 
0
ksaylor11

ターミナルに入るときのオプションの1つ>実行>デバッグ>構成の編集 enter image description here

enter image description here

適切なconda環境を選択します。また、新しいプロジェクトを作成するときに、この場所を構成するよう求められます。

0
johndpope

PyCharm 4.5.4

次の内容の.pycharmrcファイルをホームフォルダーに作成します。

source ~/.bashrc
source ~/pycharmvenv/bin/activate

Virtualenvパスを最後のパラメーターとして使用します。

次に、シェル設定->プロジェクト設定->シェルパスを設定します

/bin/bash --rcfile ~/.pycharmrc

理由はわかりませんが、うまくいきません。 PyCharmはエラーを出力します。

cmd.exe /K "<path-to-your-activate.bat>"動作しますが、各プロジェクトに同じvirtualenvを作成します。これは必要ではありません。

この 領収書 は機能しています!しかし、文字列/env_yourenvlocate/scripts/activate.batには、この"Full_path_to_your_env_locate\scripts\activate.bat"のように引用符を含める必要があります!

Virtualenvの無効化は非常に簡単です-端末に「deactivate」と入力します

(virt_env) D:\Projects\src>deactivate
D:\Projects\src>
0
Oleg Novikov

このメソッドは、プロジェクトごとに任意の仮想環境で動作するはずであり、作成するフックを使用しているため、環境を想定していません。

あなたが書く:

  • フックを呼び出すグローバルスクリプト
  • PyCharmプロジェクトごとのフックスクリプト(必須ではありません)

現在の最新のPyCharm(Community 2016.1)ではターミナル設定が許可されていないため、プロジェクトごとプロジェクト固有のフックを呼び出すスクリプトで開始します。これは私の~/.pycharmrcです:

if [ -r ".pycharm/term-activate" ]; then
   echo "Terminal activation hook detected."
   echo "Loading Bash profile..."
   source ~/.bash_profile
   echo "Activating terminal hook..."
   source ".pycharm/term-activate"
   source activate $PYCHARM_VENV
fi

Bash以外のものを使用している場合は、必要に応じて独自の.bash_profileを呼び出します。

次に、PyCharmの「ツール->ターミナル->シェルパス」を設定して、このスクリプトを呼び出します。例:/bin/bash --rcfile ~/.pycharmrc

最後に、特定の仮想環境をアクティブにする必要があるすべてのPyCharmプロジェクトについて、PyCharmプロジェクトのルート.pycharm/term-activate内にファイルを作成します。これはあなたのフックであり、PyCharmプロジェクトに必要な仮想環境の名前を定義するだけです:

export PYCHARM_VENV=<your-virtual-env-name>

もちろん、特定のPyCharmプロジェクトの端末環境で役立つと思うものなら何でもフックを拡張できます。

0
tilusnet

プロジェクトごとに個別の仮想環境が必要でしたが、これを容易にするために追加のファイルを用意することはあまり気にしませんでした。一度だけ行う必要があり、すべてのプロジェクトで機能するソリューションは、次を.bashrcまたは.bash_profileに追加することです。

if [ -d "./venv" ]; then
    source ./venv/bin/activate
fi

これにより、ターミナルが開かれている仮想環境があるかどうかが確認され、仮想環境がアクティブになっている場合はアクティブになります(もちろん、他の相対パスも使用できます)。 PyCharmの端末設定はデフォルトのままにしておくことができます。

0
golmschenk

Windowsのconda仮想環境では、バッチファイルの名前がactivate.batでないことを確認してください。これにより、conda activateコマンドとの競合が発生し、バッチファイルが再帰的に呼び出されます。

私にとって有効なのは、次のシェルパスです。

"cmd.exe" /k ""C:\FullPathToYourProject\activate-env.bat""

そしてactivate-env.batファイルで:

call activate myenvname
0
Erwin Mayer