Anaconda无法通过activate激活虚拟环境解决方案

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文件,哈哈,但就是成功激活环境了

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值