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


110

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

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

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

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

回答:


95

編集:

https://www.jetbrains.com/pycharm/whatsnew/#v2016-3-venv-in-terminalによると、PyCharm 2016.3(2016年11月リリース)はそのままでターミナルのvirutalenvをサポートしています

自動virtualenvは、bash、zsh、fish、およびWindows cmdでサポートされています。シェルの設定は、設定(設定)でカスタマイズできます。ツール| ターミナル。


古い方法:

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

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

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

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

/bin/bash --rcfile ~/.pycharmrc

9
ありがとうございました!シェルのrcファイルを上書きすることは考えていませんでした。それぞれが異なるvirtualenvを持っている可能性がある複数のプロジェクトで動作するpycharmをより適切にサポートするために、「。pycharmrc」ファイルを別の名前で呼び出し、おそらくそれをenvディレクトリ自体に配置します。~/pycharmenv/bin/terminalactivate良いオプションのように聞こえます。
Chris Cogdon 2014年

1
Pycharm 4にはIDEにvirtualenvが統合されています。詳細については、私の回答を参照してください。
2015

1
@PeterGibson、プフェレートの答えはOPの質問とは関係ありません。問題は、Pythonインタープリターではなくターミナルです。venv統合はPyCharm 4より前の段階で行われましたが、あなたの答えはうまくいきます。
Norbert、2015

1
これは、.pycharmrcプロジェクトのホームフォルダーに配置することを除いて、最も簡単なソリューションです。これにより、プロジェクトごとに異なるファイルを使用できます。適切に構成されたプロジェクトでは、.pycharmrcファイルへの絶対パスを提供する必要はありません。
tchakravarty

1
@ SiminJie、PyCharm 2016.3.2には、ボックスからそのようなオプションがあります。設定->ツール->ターミナルに移動します。そして「virtualenvをアクティブにする」オプションが有効になっていることを確認してください。
renskiy 2017年

44

更新:

設定(設定)の設定| ツール| ターミナルはグローバルです。
プロジェクトごとにvenvを使用する場合は、必ず現在のパス変数とデフォルトのvenv名を使用してください。

"cmd.exe" /k ""%CD%\venv\Scripts\activate"" 

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

PyCharm 3または4: 、、Settings およびアドオン。TerminalDefault 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""


この場合%CD%、現在の作業ディレクトリです。Windowsシェルコマンドを
bad_coder

40

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

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

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

更新:

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


これはすばらしいことですが、すべてのプロジェクトに対してvirtualenvが1つしかない場合に限られます。デフォルトのシェル設定はプロジェクト間で共有されます
MartinM '21 / 08/21

7

ピーターからの回答と実験に基づいて、私は以下を解決する優れた「一般的な解決策」を考え出しました。

  • ログインシェルの動作を復元します。PyCharmは通常ログインシェルを実行しますが、-rcfileはこれを阻止しました。スクリプトは引き続き--rcfileを使用しますが、ログインシェルのINVOCATION動作をエミュレートしようとします。
  • 環境ごとに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

1
ありがとうございました!これは、bashrcとbashプロファイルをどこから始めればよいかを把握するために何時間も失敗した結果、私にとってはうまくいきました。しかし、それがスローし、仮想環境が見つからなかったというエラーが発生したため、そのように変更しました。問題がないかどうか教えていただけますか? 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 source ~/learnp/project1/venv/bin/activate
zerohedge 2015年

@zerohedge:スクリプトは正常に動作しますが、「project1」virtualenvに固定されています。上記のスクリプトは自動検出を行うことになっていますが、想定されていることはたくさんあります。最初の作業ディレクトリは「.idea」ディレクトリの場所である、workspace.xmlファイルの形式は大幅に変更されません。残念ながら、pycharmバージョン5はその領域で大きな変更を加えたようです。現在、データがどこにあるのか実際にはわかりません。
Chris Cogdon、2015年

シェルパスもプロジェクト固有であるため、プロジェクトに応じて追加を変更してもかまいません。スクリプトを見つける前に、「bash 3.2 $:」というプロンプトしか表示されませんでした。現在のディレクトリやターミナルプロンプトの類似点は示されていません。ありがとうございました!
zerohedge 2015年

7

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

詳細はこちら。


11
これはOPにどのように答えますか?それでもsource /path/to/venv/bin/activate手動でターミナルに入力する必要があります。
frnhr 2015

6

Chrisさん、ありがとうございます。スクリプトは一部のプロジェクトでは機能しましたが、私のマシンではすべて機能しませんでした。ここに私が書いたスクリプトがあります。誰かがそれが役に立てば幸いです。

#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

ありがとう、これでうまくいきました!ただし、さらに2つのことを行う必要がありました。1)source /etc/profile〜/ .pycharmrcファイルの先頭に追加します(Mac Yosemiteの場合)2)Pycharmで、[設定]> [ツール]> [ターミナル]> [/ bin / bash --rcfile〜/ .pycharmrc]へのシェルパスを編集します
frnhr

これは素晴らしいです、ありがとう!Python 3を使用している場合は、print関数の括弧を忘れずに入れてください。私自身、このスクリプトの前に "export〜/ .bashrc"を付けなければなりませんでした。
ラファエル・ゴメス

5

上記のすべての回答を確認しましたが、どれもエレガントではありません。Pycharm 2017.1.3(私のコンピューター)では、最も簡単な方法は、オプションを開いSettings->Tools->Terminalてチェックすることです。Shell integrationActivate virtualenv

画像


まあ、受け入れられた答えはこれと全く同じことを引用しています。ただそれは絵がありません。
Vikas Prasad

5

あなたがWindowsバージョンを使用している場合、それは非常に簡単です。既にそのフォルダにだけナビゲート仮想環境をお持ちの場合は、見つけるactivate.batの内部Scriptsフォルダを。それのコピーの完全パスをしてpycharmの端末を押しに貼り付けるEnterとすれば完了です!

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

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

ギア!


正解です。ありがとうございました!簡単な質問。Anacondaで作成した3つの異なる仮想環境があります。activate.batそれぞれに別のものはありますか?
user1700890

1
@ user1700890はい!環境を上書きしていない場合、環境には個別のフォルダーがあり、結果として個別のactivate.batファイルが必要です。答えが気に入ったら、
遠慮なく投票してください

ありがとう、チェックしたところ、フォルダにScriptsフォルダがありません。またPycharmは、それは文句activate.bat有効なPython SDKではありません
user1700890

1
だから私はあなたが最初にAnacondaを使用しているときに作成されたvirtual-environmentフォルダーを見つけてそれからその中でactivateバッチファイルを実行するべきだと思います。または、それが可能であれば、新しい環境を作成してください。
AmiNadimi 2017年

3

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


2

pycharmactivateというスクリプトをホームディレクトリに追加しました。PyCharm(4.0.1)ファイル>設定>ツール>ターミナル>シェルパスの値を/ bin / bash --rcfile〜/ pycharmactivateに設定します。プロジェクトとvirtualenvディレクトリ/名前が異なる場合は、おそらく最善の解決策ではありませんが、私にとってはうまくいきます。このスクリプトには次の3行が含まれており、virtualenvがプロジェクトディレクトリと同じ名前であると想定しています。

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


1

私のWindows 7マシンで機能するソリューションがあります。

私はPyCharmのターミナルが実行された結果であると考えていますcmd.exe。これにより、Windows PATH変数がロードされ、その中で最初に検出されたバージョンのPythonが使用されPATHます。編集するには、この変数は、右クリックし、マイコンピュータ > - [プロパティ ] - > [ システムの詳細設定 ] - > [ 高度なタブ- > [ 環境変数... ]ボタンを。内のシステム環境変数セクションを選択し、[編集] PATH変数を。

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

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

...そして編集PATH(現在は3行のみ):

C:[プロジェクトパス] \ virtualenv-Py2.7_Dj1.7 \ Lib \ site-packages \ pip;
C:[プロジェクトパス] \ virtualenvs \ virtualenv-Py2.7_Dj1.7 \ Scripts;
C:[プロジェクトパス] \ virtualenvs \ virtualenv-Py2.7_Dj1.7 \ Lib \ site-packages \ django \ bin;

これをテストするには、開いて新しいターミナルウィンドウを([スタート] - > [タイプでcmd、ヒットEnter、それはあなたの仮想環境を使っているかどうかを確認)。それが機能する場合は、PyCharm再起動し、PyCharmのターミナルでテストします。


1

これは私がやっていることです:ソースコードフォルダーにactivate_env.bat(windows、たぶんLinuxでは.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

プロジェクトを別のディレクトリに移動した場合は、[設定]ダイアログで新しいパスを設定できます。次に、このプロジェクトインタープリターを[構成の編集]ダイアログで設定する必要があります。

ここに画像の説明を入力してください

ここに画像の説明を入力してください


0

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

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$ 

1
ただし、そのためには、ターミナルを開くたびにworkonスクリプトをアクティブ化し、プログラムを実行するためにpycharmが現在使用している仮想環境知る必要があります。どちらも明示的に回避しようとしていました。
Chris Cogdon、2015

@ChrisCogdonああ、なるほど
ksaylor11

0

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

あなたが書く:

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

現在の最新のPyCharm(コミュニティ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

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

私にとってうまくいくのは次のシェルパスです:

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

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

call activate myenvname

0

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

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

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


0

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>

「理由はわかりませんが、私にはうまくいきません」-この解決策はLinuxではなく、Macに適しているためでしょうか?;)
Nir Alfasi

0

WSL(Ubuntu on Windows)のソリューション

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

.pycharmrcPeter Gibsonの回答に記載されているようなファイルを使用してください。.pycharmrc次の内容でファイルをホームディレクトリに追加します。

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

Pycharm ファイル>設定>ツール>ターミナルで、次の「シェルパス」を追加します。

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


プロジェクト固有のvirtualenv

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

source〜 / .bashrc
 source〜/ pycharmvenv / bin / activate#絶対パス
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では、次のような構成で新しいリモートインタプリタを追加します。

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

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

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


0

ターミナルに入るときに使用できる1つのオプション>実行>デバッグ>構成の編集 ここに画像の説明を入力してください

ここに画像の説明を入力してください

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.