PyCharmをセットアップし、virtual envコマンドを使用して(またはPyCharmで直接)virtualenvを作成し、その環境をインタープリターとしてアクティブにしました。すべてがうまく機能しています。
ただし、「ツール、ターミナルを開く」を使用してターミナルを開くと、提供されるシェルプロンプトはnotを使用して仮想環境を使用します。それを有効にするには、そのターミナル内でsource ~/envs/someenv/bin/activate
を使用する必要があります。
別の方法は、シェルで環境をアクティブにし、その環境からPyCharmを実行することです。これは「実行可能」ですが、かなりugいため、PyCharmから環境またはプロジェクトを切り替えると大きな問題が発生します。現在、完全に間違った環境を使用しています。
「ツール、ターミナルを開く」で仮想環境を自動的にアクティブ化する他の、もっと簡単な方法はありますか?
Windowsユーザーの場合、PyCharmおよびWindows環境で仮想環境を使用する場合、cmd.exeに/ kパラメーターを使用して、仮想環境を自動的に設定できます。
[設定]、[ターミナル]、[デフォルトシェル]に移動し、/K <path-to-your-activate.bat>
を追加します。
以前の回答についてコメントする評判はないので、この修正版を投稿します。これにより、時間を大幅に節約できます。
更新:
注:Pycharmは仮想環境を直接サポートするようになったため、うまく機能しているようです。そのため、回避策はもう必要ありません。
Windowsユーザーの場合:仮想環境でPyCharmを使用する場合、/K
パラメーターをcmd.exe
に使用して、仮想環境を自動的に設定できます。
PyCharm 3または4:Settings
、Terminal
、Default Shell
を追加し、/K <path-to-your-activate.bat>
を追加します。
PyCharm 5:Settings
、Tools
、Terminal
、および/K <path-to-your-activate.bat>
をShell path
に追加します。
PyCharm 2016.1または2016.2:Settings
、Tools
、Terminal
、および""/K <path-to-your-activate.bat>""
をShell path
に追加して追加します(引用に注意してください)。また、cmd.exeの周りに引用符を追加すると、次の結果になります。
"cmd.exe" /k ""C:\mypath\my-venv\Scripts\activate.bat""
ピーターと実験からの回答に基づいて、次の問題を解決する優れた「一般的な解決策」を思いつきました。
このスクリプトをどこかの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
PyCharm 4にはIDEにvirtualenvが統合されています。プロジェクトインタープリターを選択するときに、virtualenvを作成、追加、または選択できます。構成済みのプロジェクトインタープリターで実行される「Pythonコンソール」を追加しました。
クリスのおかげで、あなたのスクリプトはいくつかのプロジェクトで機能しましたが、すべてが私のマシンでは機能しませんでした。ここに私が書いたスクリプトがありますが、誰でもそれが役に立つと思います。
#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
MacではPyCharm => Preferences ... => Tools => Terminal => Activate virtualenvで、デフォルトで有効になっているはずです。
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
Peterの答えに続いて、ここにMac版の.pycharmrc
ファイルがあります:
source /etc/profile
source ~/.bash_profile
source <venv_dir>/bin/activate
編
これは私がやっていることです:ソースコード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>
Windows 7マシンで動作するソリューションがあります。
PyCharmのターミナルは、WindowsのPATH
変数をロードし、そのPATH
内で最初に見つかったPythonのバージョンを使用するcmd.exe
を実行した結果だと思います。この変数を編集するには、右クリックマイコンピューター->プロパティ- ->システムの詳細設定->詳細タブ->環境変数...ボタン。 システム変数セクション内で、PATH
変数を選択して編集します。
PATH
before編集の関連部分は次のとおりです。
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のターミナルでテストします。
Pycharm 2016.1.4v以降を使用する場合は、"default path" /K "<path-to-your-activate.bat>"
を使用する必要があります。引用符を忘れないでください
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トンネルをブロックします。これらのサービスは、タスクマネージャー->サービスで停止できます。その後、すべてが再び機能します。
もう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$
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>
このメソッドは、プロジェクトごとに任意の仮想環境で動作するはずであり、作成するフックを使用しているため、環境を想定していません。
あなたが書く:
現在の最新の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プロジェクトの端末環境で役立つと思うものなら何でもフックを拡張できます。
プロジェクトごとに個別の仮想環境が必要でしたが、これを容易にするために追加のファイルを用意することはあまり気にしませんでした。一度だけ行う必要があり、すべてのプロジェクトで機能するソリューションは、次を.bashrc
または.bash_profile
に追加することです。
if [ -d "./venv" ]; then
source ./venv/bin/activate
fi
これにより、ターミナルが開かれている仮想環境があるかどうかが確認され、仮想環境がアクティブになっている場合はアクティブになります(もちろん、他の相対パスも使用できます)。 PyCharmの端末設定はデフォルトのままにしておくことができます。
Windowsのconda仮想環境では、バッチファイルの名前がactivate.bat
でないことを確認してください。これにより、conda activate
コマンドとの競合が発生し、バッチファイルが再帰的に呼び出されます。
私にとって有効なのは、次のシェルパスです。
"cmd.exe" /k ""C:\FullPathToYourProject\activate-env.bat""
そしてactivate-env.batファイルで:
call activate myenvname