Anaconda无法通过activate激活虚拟环境解决方案
问题描述:在powershell里面通过activate 无法激活虚拟环境 具体报错如下:
F:\pythonwork>cmd
Microsoft Windows [版本 10.0.18363.1256]
(c) 2019 Microsoft Corporation。保留所有权利。
```powershell
F:\pythonwork>conda deactivate
F:\pythonwork>conda activate
(base) F:\pythonwork>conda activate py37
WARNING conda.exceptions:print_unexpected_error_report(1213): KeyError('pkgs_dirs')
Traceback (most recent call last):
File "D:\Anaconda\lib\site-packages\conda\cli\main.py", line 140, in main
return activator_main()
File "D:\Anaconda\lib\site-packages\conda\activate.py", line 1210, in main
print(activator.execute(), end='')
File "D:\Anaconda\lib\site-packages\conda\activate.py", line 178, in execute
return getattr(self, self.command)()
File "D:\Anaconda\lib\site-packages\conda\activate.py", line 152, in activate
builder_result = self.build_activate(self.env_name_or_prefix)
File "D:\Anaconda\lib\site-packages\conda\activate.py", line 300, in build_activate
return self._build_activate_stack(env_name_or_prefix, False)
File "D:\Anaconda\lib\site-packages\conda\activate.py", line 314, in _build_activate_stack
prefix = locate_prefix_by_name(env_name_or_prefix)
File "D:\Anaconda\lib\site-packages\conda\base\context.py", line 1429, in locate_prefix_by_name
envs_dirs = context.envs_dirs
File "D:\Anaconda\lib\site-packages\conda\base\context.py", line 507, in envs_dirs
return mockable_context_envs_dirs(self.root_writable, self.root_prefix, self._envs_dirs)
File "D:\Anaconda\lib\site-packages\conda\base\context.py", line 88, in mockable_context_envs_dirs
fixed_dirs += join(user_data_dir(APP_NAME, APP_NAME), 'envs'),
File "D:\Anaconda\lib\site-packages\conda\_vendor\appdirs.py", line 67, in user_data_dir
path = os.path.join(_get_win_folder(const), appauthor, appname)
File "D:\Anaconda\lib\site-packages\conda\_vendor\appdirs.py", line 284, in _get_win_folder_with_pywin32
from win32com.shell import shellcon, shell
ImportError: DLL load failed: 找不到指定的程序。
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\Anaconda\lib\site-packages\conda\exceptions.py", line 1211, in print_unexpected_error_report
message_builder.append(get_main_info_str(error_report['conda_info']))
File "D:\Anaconda\lib\site-packages\conda\cli\main_info.py", line 238, in get_main_info_str
info_dict['_' + key] = ('\n' + 26 * ' ').join(info_dict[key])
KeyError: 'pkgs_dirs'
# >>>>>>>>>>>>>>>>>>>>>> ERROR REPORT <<<<<<<<<<<<<<<<<<<<<<
Traceback (most recent call last):
File "D:\Anaconda\lib\site-packages\conda\cli\main.py", line 140, in main
return activator_main()
File "D:\Anaconda\lib\site-packages\conda\activate.py", line 1210, in main
print(activator.execute(), end='')
File "D:\Anaconda\lib\site-packages\conda\activate.py", line 178, in execute
return getattr(self, self.command)()
File "D:\Anaconda\lib\site-packages\conda\activate.py", line 152, in activate
builder_result = self.build_activate(self.env_name_or_prefix)
File "D:\Anaconda\lib\site-packages\conda\activate.py", line 300, in build_activate
return self._build_activate_stack(env_name_or_prefix, False)
File "D:\Anaconda\lib\site-packages\conda\activate.py", line 314, in _build_activate_stack
prefix = locate_prefix_by_name(env_name_or_prefix)
File "D:\Anaconda\lib\site-packages\conda\base\context.py", line 1429, in locate_prefix_by_name
envs_dirs = context.envs_dirs
File "D:\Anaconda\lib\site-packages\conda\base\context.py", line 507, in envs_dirs
return mockable_context_envs_dirs(self.root_writable, self.root_prefix, self._envs_dirs)
File "D:\Anaconda\lib\site-packages\conda\base\context.py", line 88, in mockable_context_envs_dirs
fixed_dirs += join(user_data_dir(APP_NAME, APP_NAME), 'envs'),
File "D:\Anaconda\lib\site-packages\conda\_vendor\appdirs.py", line 67, in user_data_dir
path = os.path.join(_get_win_folder(const), appauthor, appname)
File "D:\Anaconda\lib\site-packages\conda\_vendor\appdirs.py", line 284, in _get_win_folder_with_pywin32
from win32com.shell import shellcon, shell
ImportError: DLL load failed: 找不到指定的程序。
`$ D:\Anaconda\Scripts\conda-script.py shell.cmd.exe activate py37`
environment variables:
conda info could not be constructed.
KeyError('pkgs_dirs')
An unexpected error has occurred. Conda has prepared the above report.
If submitted, this report will be used by core maintainers to improve
future releases of conda.
Would you like conda to send this report to the core maintainers?
No report sent. To permanently opt-out, use
$ conda config --set report_errors false
解决方案:发现在后面有这么一句话:
File "D:\Anaconda\lib\site-packages\conda\_vendor\appdirs.py", line 284, in _get_win_folder_with_pywin32
from win32com.shell import shellcon, shell
ImportError: DLL load failed: 找不到指定的程序。
我就顺着路径查看D:\Anaconda\lib\site-packages\win32com文件夹,发现该文件夹下没有shell文件。然后卸载和重新安装win32com。
pip uninstall pywin32
pip install pywin32
效果如下,激活虚拟环境成功:
(base) F:\pythonwork>pip uninstall pywin32
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
Found existing installation: pywin32 223
Uninstalling pywin32-223:
Would remove:
d:\anaconda\lib\site-packages\adodbapi
d:\anaconda\lib\site-packages\isapi
d:\anaconda\lib\site-packages\pythoncom.py
d:\anaconda\lib\site-packages\pythonwin
d:\anaconda\lib\site-packages\pywin32-223-py3.7.egg-info
d:\anaconda\lib\site-packages\win32\lib\afxres.py
d:\anaconda\lib\site-packages\win32\lib\commctrl.py
d:\anaconda\lib\site-packages\win32\lib\dbi.py
d:\anaconda\lib\site-packages\win32\lib\mmsystem.py
d:\anaconda\lib\site-packages\win32\lib\netbios.py
d:\anaconda\lib\site-packages\win32\lib\ntsecuritycon.py
d:\anaconda\lib\site-packages\win32\lib\pywin32_testutil.py
d:\anaconda\lib\site-packages\win32\lib\pywintypes.py
d:\anaconda\lib\site-packages\win32\lib\rasutil.py
d:\anaconda\lib\site-packages\win32\lib\regcheck.py
d:\anaconda\lib\site-packages\win32\lib\regutil.py
d:\anaconda\lib\site-packages\win32\lib\sspi.py
d:\anaconda\lib\site-packages\win32\lib\sspicon.py
d:\anaconda\lib\site-packages\win32\lib\win32con.py
d:\anaconda\lib\site-packages\win32\lib\win32cryptcon.py
d:\anaconda\lib\site-packages\win32\lib\win32evtlogutil.py
d:\anaconda\lib\site-packages\win32\lib\win32gui_struct.py
d:\anaconda\lib\site-packages\win32\lib\win32inetcon.py
d:\anaconda\lib\site-packages\win32\lib\win32netcon.py
d:\anaconda\lib\site-packages\win32\lib\win32pdhquery.py
d:\anaconda\lib\site-packages\win32\lib\win32pdhutil.py
d:\anaconda\lib\site-packages\win32\lib\win32rcparser.py
d:\anaconda\lib\site-packages\win32\lib\win32serviceutil.py
d:\anaconda\lib\site-packages\win32\lib\win32timezone.py
d:\anaconda\lib\site-packages\win32\lib\win32traceutil.py
d:\anaconda\lib\site-packages\win32\lib\win32verstamp.py
d:\anaconda\lib\site-packages\win32\lib\winerror.py
d:\anaconda\lib\site-packages\win32\lib\winioctlcon.py
d:\anaconda\lib\site-packages\win32\lib\winnt.py
d:\anaconda\lib\site-packages\win32\lib\winperf.py
d:\anaconda\lib\site-packages\win32\lib\winxptheme.py
d:\anaconda\lib\site-packages\win32com
d:\anaconda\lib\site-packages\win32comext
Proceed (y/n)? y
Successfully uninstalled pywin32-223
(base) F:\pythonwork>pip uninstall pywin32
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
WARNING: Skipping pywin32 as it is not installed.
(base) F:\pythonwork>pip install pywin32
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting pywin32
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/25/54/177ee28fec4ecd23fa539f3df78067e7a4927515b84eac34e36060fcdb8d/pywin32-300-cp37-cp37m-win_amd64.whl (9.2 MB)
|████████████████████████████████| 9.2 MB 726 kB/s
Installing collected packages: pywin32
Successfully installed pywin32-300
(base) F:\pythonwork>conda activate py37
(py37) F:\pythonwork>
如果不行,多来两遍试试。
虽然最后win32com文件夹下还是没有shell文件,哈哈,但就是成功激活环境了