Edited at

【Anaconda+VSCode】Pythonの環境設定で詰まったところ【Windows10】


1. はじめに

ご覧いただきありがとうございます。

インターン先のMacでAnacondaとVSCodeを使っていてその環境を

家でも設定したいと思い、いろいろな記事をみて試行錯誤しても

うまくいかず格闘した部分があったため、備忘録を兼ねて記事にさせていただきました。

基本の環境設定については

Windows10環境にAnaconda+Visual Studio CodeでPython環境を構築【2017年9月】

がとても分かり易いかと思いますのでこの環境設定で詰まった際に

この記事を参照していただければと思います。

初投稿となりますので至らない点がありましたらすみません。


2. conda activateができない

上記の記事などを参考に環境設定をし、

さてconda activateを実行しようと思ってターミナル(power shell)に入力したところ

以下のようなエラーメッセージが出てきました。


error_message

conda activate py36

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
If using 'conda activate' from a batch script, change your
invocation to 'CALL conda.bat activate'.

To initialize your shell, run

$ conda init <SHELL_NAME>

Currently supported shells are:
- bash
- cmd.exe
- fish
- tcsh
- xonsh
- zsh
- powershell

See 'conda init --help' for more information and options.

IMPORTANT: You may need to close and restart your shell after running 'conda init'.


とりあえず、

$ conda init <SHELL_NAME>

をしろと言われているのでしてみると


error_message

conda init powershell

Traceback (most recent call last):
File "C:\Users\chuo2\Anaconda3\lib\site-packages\conda\exceptions.py", line 1062, in __call__
return func(*args, **kwargs)
File "C:\Users\chuo2\Anaconda3\lib\site-packages\conda\cli\main.py", line 84, in _main
exit_code = do_call(args, p)
File "C:\Users\chuo2\Anaconda3\lib\site-packages\conda\cli\conda_argparse.py", line 82, in do_call
exit_code = getattr(module, func_name)(args, parser)
File "C:\Users\chuo2\Anaconda3\lib\site-packages\conda\cli\main_init.py", line 16, in execute
from ..core.initialize import initialize, initialize_dev, install
File "C:\Users\chuo2\Anaconda3\lib\site-packages\conda\core\initialize.py", line 61, in <module>
from ..gateways.disk.create import copy, mkdir_p
File "C:\Users\chuo2\Anaconda3\lib\site-packages\conda\gateways\disk\create.py", line 17, in <module>
import conda_package_handling.api
File "C:\Users\chuo2\Anaconda3\lib\site-packages\conda_package_handling\api.py", line 3, in <module>
from libarchive.exception import ArchiveError as _LibarchiveArchiveError
File "C:\Users\chuo2\Anaconda3\lib\site-packages\libarchive\__init__.py", line 1, in <module>
from .entry import ArchiveEntry
File "C:\Users\chuo2\Anaconda3\lib\site-packages\libarchive\entry.py", line 6, in <module>
from . import ffi
File "C:\Users\chuo2\Anaconda3\lib\site-packages\libarchive\ffi.py", line 48, in <module>
libarchive = ctypes.cdll.LoadLibrary(libarchive_path)
File "C:\Users\chuo2\Anaconda3\lib\ctypes\__init__.py", line 434, in LoadLibrary
return self._dlltype(name)
File "C:\Users\chuo2\Anaconda3\lib\ctypes\__init__.py", line 356, in __init__
self._handle = _dlopen(self._name, mode)
TypeError: LoadLibrary() argument 1 must be str, not None

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\chuo2\Anaconda3\Scripts\conda-script.py", line 12, in <module>
sys.exit(main())
File "C:\Users\chuo2\Anaconda3\lib\site-packages\conda\cli\main.py", line 150, in main
return conda_exception_handler(_main, *args, **kwargs)
File "C:\Users\chuo2\Anaconda3\lib\site-packages\conda\exceptions.py", line 1354, in conda_exception_handler
return_value = exception_handler(func, *args, **kwargs)
File "C:\Users\chuo2\Anaconda3\lib\site-packages\conda\exceptions.py", line 1065, in __call__
return self.handle_exception(exc_val, exc_tb)
File "C:\Users\chuo2\Anaconda3\lib\site-packages\conda\exceptions.py", line 1109, in handle_exception
return self.handle_unexpected_exception(exc_val, exc_tb)
File "C:\Users\chuo2\Anaconda3\lib\site-packages\conda\exceptions.py", line 1120, in handle_unexpected_exception
self.print_unexpected_error_report(error_report)
File "C:\Users\chuo2\Anaconda3\lib\site-packages\conda\exceptions.py", line 1190, in print_unexpected_error_report
from .cli.main_info import get_env_vars_str, get_main_info_str
File "C:\Users\chuo2\Anaconda3\lib\site-packages\conda\cli\main_info.py", line 19, in <module>
from ..core.index import _supplement_index_with_system
File "C:\Users\chuo2\Anaconda3\lib\site-packages\conda\core\index.py", line 9, in <module>
from .package_cache_data import PackageCacheData
File "C:\Users\chuo2\Anaconda3\lib\site-packages\conda\core\package_cache_data.py", line 15, in <module>
from conda_package_handling.api import InvalidArchiveError
File "C:\Users\chuo2\Anaconda3\lib\site-packages\conda_package_handling\api.py", line 7, in <module>
from .tarball import CondaTarBZ2 as _CondaTarBZ2
File "C:\Users\chuo2\Anaconda3\lib\site-packages\conda_package_handling\tarball.py", line 7, in <module>
import libarchive
File "C:\Users\chuo2\Anaconda3\lib\site-packages\libarchive\__init__.py", line 1, in <module>
from .entry import ArchiveEntry
File "C:\Users\chuo2\Anaconda3\lib\site-packages\libarchive\entry.py", line 6, in <module>
from . import ffi
File "C:\Users\chuo2\Anaconda3\lib\site-packages\libarchive\ffi.py", line 48, in <module>
libarchive = ctypes.cdll.LoadLibrary(libarchive_path)
File "C:\Users\chuo2\Anaconda3\lib\ctypes\__init__.py", line 434, in LoadLibrary
return self._dlltype(name)
File "C:\Users\chuo2\Anaconda3\lib\ctypes\__init__.py", line 356, in __init__
self._handle = _dlopen(self._name, mode)
TypeError: LoadLibrary() argument 1 must be str, not None


これがエラー地獄の始まりでした。


3. 解決方法

試した方法

・anacondaの再インストール

 ➡ 変化なし

・エラー文をググる 

 ➡ 英語のソースしか出てこない上、日本語のソースではPythonコードのエラーしか出てこない

・環境変数のPath設定

 ➡ 変化なし

・Setting.jsonのPath設定

 ➡ 変化なし

と何をやってもダメで、あきらめようと思ったとき

エラーコードに引っかかったサイトでanaconda と pyenv は相性が悪いとの記事がありました。

power shellとpyenvは別物ですが同じエラーコードが出るということは

power shellとanacondaの相性も悪いのではないかと思い、

ターミナルをコマンドプロンプト(cmd.exe)に変更してconda activateを実行してみると

(base) C:\Users\chuo2\Documents\Python Scripts>conda activate py36

(py36) C:\Users\chuo2\Documents\Python Scripts>

無事に実行することができました。

試してみたところ、conda installなどのコマンドも問題なく使えました。


4. 終わりに

地獄のエラーに悩まされること3時間、こんな簡単なことで解決してしまって怒りのやり場がなく

むしゃくしゃしてQiitaに投稿してみました。

同じことに悩まされている人が時間を無駄にしないよう活用していただければと思います。