私はWindows10でCmderをPython 3.5で、ラップトップと仕事用コンピューターでvirtualenvを使用して問題なく使用しています。
これで、Windows 10、Python 3.5、virtualenv 15.0を実行している新しいコンピューターがあり、python仮想環境を次のように初期化できます:
virtualenv env
そして、virtualenvディレクトリを取得しますが、実行すると:
env/Scripts/activate
何も起こりません。エラーメッセージはなく、最悪の場合、環境がアクティブ化されたかどうかを示すものは何もありません(つまり、文字列「(env)」がパスの横のターミナルにポップアップ表示されません)。
奇妙なことに、プレーンな古いcmdを使用するとvenvをアクティブ化でき、「(env)」がターミナルに表示されます。 Cmderで実行した場合だけではありません。もう1つの奇妙な点(関連しているとは思わないが、関連している可能性がある)は、通常のcmdでvirtualenvを実行できるようになると、シャットオフしようとしたときに「deactivate」キーワードが認識されないと表示されることです。
StackOverflowでこの投稿(下記)を見つけました。これは似ていますが、実際には答えがなく、PowerShellに関するものであるため、それほど便利ではありません。
https://stackoverflow.com/questions/31769863/cant-activate-python-venv-in-windows-1
何かご意見は?
ありがとうございました。
注この回答は古く、cmder conda/venvをサポートするようになりました として不要になりました。それがあなたのために働いていないならば、あなたのcmderインストールを更新してください。
元の(時代遅れの)回答
Conda envでも同様の問題が発生しました(Vanilla virtualenvでも同じように見えます)。 Cmderは独自のプロンプトを強制し、プロンプトenv変数を無視します。次の内容の[cmder dir]\config [something] .luaというファイルを追加する必要があります。
-- Code based on https://github.com/cmderdev/cmder/issues/1056
-- with modifications to make it actually work (https://github.com/cmderdev/cmder/issues/1056#issuecomment-237403714)
---
-- Find out current conda/virtual envs
-- @return {false|conda/virtual env name}
---
local clink_path_lua_file = clink.get_env('CMDER_ROOT')..'\\vendor\\clink-completions\\modules\\path.lua'
dofile(clink_path_lua_file)
function get_virtual_env(env_var)
env_path = clink.get_env(env_var)
if env_path then
basen = exports.basename(env_path)
return basen
end
return false
end
---
-- add conda env name
---
function conda_Prompt_filter()
-- add in conda env name
local conda_env = get_virtual_env('CONDA_DEFAULT_ENV')
if conda_env then
clink.Prompt.value = string.gsub(clink.Prompt.value, "λ", "["..conda_env.."] λ")
end
end
---
-- add virtual env name
---
function venv_Prompt_filter()
-- add in virtual env name
local venv = get_virtual_env('VIRTUAL_ENV')
if venv then
clink.Prompt.value = string.gsub(clink.Prompt.value, "λ", "["..venv.."] λ")
end
end
clink.Prompt.register_filter(conda_Prompt_filter, 20)
clink.Prompt.register_filter(venv_Prompt_filter, 20)