Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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に投稿してみました。

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

chuo2110
やったことがある言語は C/C++/C#/Java/MySQL/HTML/CSS/GAS/Python/Go etc… Cは3年、Javaを1年程勉強してました。 他は独学と学校でかじった程度です。 現在はインフラ周りについて勉強してます
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away