LoginSignup
novice
@novice

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

VScode上でPythonのライブラリimport不具合。PATHの設定方法に関する質問

解決したいこと

windows11・仮想環境下(venv)・VScodeを使った状況で
numpy等各ライブラリをimportしたいのですが、
「ModuleNotFoundError: No module named 'numpy'」とエラーが出てしまいます。
解決方法、特にVScodeのPATH設定を教えてほしいです。

詳細な状況ですが、まず前提をお伝えします。これを踏まえた上での問題になります。

まず、module(ライブラリ)のPATHを確認すべく以下を実行しました。

該当するソースコード

import sys
sys.path

で確認すると、以下が出ます。

['C:\\Users\\ユーザー名\\AppData\\Local\\Programs\\Python\\Python310\\python310.zip',
 'C:\\Users\\ユーザー名\\AppData\\Local\\Programs\\Python\\Python310\\DLLs',
 'C:\\Users\\ユーザー名\\AppData\\Local\\Programs\\Python\\Python310\\lib',
 'C:\\Users\\ユーザー名\\AppData\\Local\\Programs\\Python\\Python310',
 'c:\\Users\\ユーザー名\\venv_py310',
 '',
 'c:\\Users\\ユーザー名\\venv_py310\\lib\\site-packages',
 'c:\\Users\\ユーザー名\\venv_py310\\lib\\site-packages\\win32',
 'c:\\Users\\ユーザー名\\venv_py310\\lib\\site-packages\\win32\\lib',
 'c:\\Users\\ユーザー名\\venv_py310\\lib\\site-packages\\Pythonwin']

そして、コマンドプロンプトから

pip show numpy

と入力すると、以下でLocationとしてライブラリのPATHが表示されました。

Location: c:\users\ユーザー名\appdata\local\programs\python\python310\lib\site-packages

このことから、sys.pathでコードした出力値に
「c:\users\ユーザー名\appdata\local\programs\python\python310\lib」は含まれるものの、
その先のディレクトリである「\site-packages」まで含まれるPATHの出力値はないため、
「c:\users\ユーザー名\appdata\local\programs\python\python310\lib\site-packages」
の中から一旦、numpy関連のフォルダをコピーして、
「c:\users\ユーザー名\appdata\local\programs\python\python310\lib」へペーストし、
問題が解決できるか試しました。結論以下のように解決できます。

import numpy

でnumpyがエラーなくインポートされ、試しに関数付きで「numpy.zeros(3)」で出力値が

array([0., 0., 0.])

と返ります。このことからも適切なインタプリタが選択されていることもわかり、
問題はPATHの設定によるものだと考えられました。

以上の前提を踏まえた上で問題はここからです。

自分としては、ライブラリを
「c:\users\ユーザー名\appdata\local\programs\python\python310\lib」
からではなく、
「c:\users\ユーザー名\appdata\local\programs\python\python310\lib\site-packages」
から拾ってほしいので、VScodeのPATH設定を何とかしたいです。

自分で試したこと

PATHの設定には、VScode上の「設定(JSON)を開く」から、

{
    "python.venvPath": " C:\\Users\\ユーザー名\\venv_py310\\lib\\site-packages",
    "python.analysis.extraPaths": [
        " C:\\Users\\ユーザー名\\venv_py310\\lib\\site-packages",
        "C:\\Users\\ユーザー名\\Appdata\\local\\programs\\python\\python310\\lib\\site-packages"
    ],
    "python.autoComplete.extraPaths": [
        "c:\\users\\ユーザー名\\appdata\\local\\programs\\python\\python310\\lib\\site-packages"
    ]
}

と記載し、「c:\users\ユーザー名\appdata\local\programs\python\python310\lib\site-packages」
もPATHの検索範囲に含まれるように設定し、VScodeの再起動も行ったのですが、

numpyのインポートがうまくいかず、初期と同じ
「ModuleNotFoundError: No module named 'numpy'」のエラーが出てしまいます。

ちなみに、

import sys
sys.path

で確認すると、以下が出ており、jsonに新たに内容を追加したにも関わらず、

['C:\\Users\\ユーザー名\\AppData\\Local\\Programs\\Python\\Python310\\python310.zip',
 'C:\\Users\\ユーザー名\\AppData\\Local\\Programs\\Python\\Python310\\DLLs',
 'C:\\Users\\ユーザー名\\AppData\\Local\\Programs\\Python\\Python310\\lib',
 'C:\\Users\\ユーザー名\\AppData\\Local\\Programs\\Python\\Python310',
 'c:\\Users\\ユーザー名\\venv_py310',
 '',
 'c:\\Users\\ユーザー名\\venv_py310\\lib\\site-packages',
 'c:\\Users\\ユーザー名\\venv_py310\\lib\\site-packages\\win32',
 'c:\\Users\\ユーザー名\\venv_py310\\lib\\site-packages\\win32\\lib',
 'c:\\Users\\ユーザー名\\venv_py310\\lib\\site-packages\\Pythonwin']

というようにPATHが追加されていませんでした。
どなたか解決手段がわかる方やVScodeの扱いが得意な方などいらっしゃれば、
教えていただきたいです。。。

よろしくお願いいたします。

0

4Answer

以前に同様なQ&Aがありましたが、結論を覚えていません。
とりあえず、以下でどうでしょうか。

import sys
sys.path.append('c:\users\ユーザー名\appdata\local\programs\python\python310\lib\site-packages')
import numpy

↓これだったかも

1

Comments

  1. @novice

    Questioner

    @nak435 さん
    ご返信ありがとうございます。リンクもありがとうござます。

    「sys.path.append」関数によって「sys.path」で入力後、新たに指定のPATHが追加されていい感じだったのですが、import numpy で同様のエラーである
    「ModuleNotFoundError: No module named 'numpy'」が出てしまいました。

    この場合、原因は他にもあるということになるのでしょうか。。?
    ブラウザのjupyter-labでは問題なく使えるのにVScodeになるとこの問題が発生するので
    VScode特有の問題なんだろうなとは思うのですが、手詰まりです。。。
    VScodeの方がコードがスムーズなので何とかしてVScodeで使いたいと思ってまして...

  2. pathを追加したのにもかかわらず、importでエラーとはおかしいですね。

    以下のコードを、VSCodeとJupyterでそれぞれ実行して、結果を比較してみてください。

    import sys
    sys.path.append('c:\users\ユーザー名\appdata\local\programs\python\python310\lib\site-packages')
    import pprint
    pprint.pprint(sys.path)
    
  3. ブラウザのjupyter-labでは問題なく使えるのに...

    jupyter で以下のコードを実行して、出てきたパスを vscodeで path.append したらどうでしょうか。

    import numpy
    print(numpy.__file__)
    

    numpy ファイルのフルパスが出てくるので、ファイル名を除くパスを path.append する。

  4. @novice

    Questioner

    @nak435 さん
    ご返信ありがとうございます。
    アドバイスいただいたとおり、①ブラウザ上のjupyterlabと②VScodeで上記コード実行しました。
    出力結果は以下になります。①と②で一部違いがあるようですが、これによってエラーが生じているのかどうかわからなずで。。。もしわかることがありましたらご教授いただけますと幸いです。

    ※なおjupyter-labはコマンドで以下入力して起動してます。
    (venv_py310) C:\Users\ユーザー名\venv_py310>jupyter-lab

    <①> ※appendで加える前後で変化ありませんでした
    ['C:\Users\ユーザ名\AppData\Local\Programs\Python\Python310\python310.zip',
    'C:\Users\ユーザ名\AppData\Local\Programs\Python\Python310\DLLs',
    'C:\Users\ユーザ名\AppData\Local\Programs\Python\Python310\lib',
    'C:\Users\ユーザ名\AppData\Local\Programs\Python\Python310',
    '',
    'C:\Users\ユーザ名\AppData\Local\Programs\Python\Python310\lib\site-packages',
    'C:\Users\ユーザ名\AppData\Local\Programs\Python\Python310\lib\site-packages\win32',
    'C:\Users\ユーザ名\AppData\Local\Programs\Python\Python310\lib\site-packages\win32\lib',
    'C:\Users\ユーザ名\AppData\Local\Programs\Python\Python310\lib\site-packages\Pythonwin']

    <②>
    ['C:\Users\ユーザー名\AppData\Local\Programs\Python\Python310\python310.zip',
    'C:\Users\ユーザー名\AppData\Local\Programs\Python\Python310\DLLs',
    'C:\Users\ユーザー名\AppData\Local\Programs\Python\Python310\lib',
    'C:\Users\ユーザー名\AppData\Local\Programs\Python\Python310',
    'c:\Users\ユーザー名\venv_py310',
    '',
    'c:\Users\ユーザー名\venv_py310\lib\site-packages',
    'c:\Users\ユーザー名\venv_py310\lib\site-packages\win32',
    'c:\Users\ユーザー名\venv_py310\lib\site-packages\win32\lib',
    'c:\Users\ユーザー名\venv_py310\lib\site-packages\Pythonwin',
    'C:\Users\ユーザー名\AppData\Local\Programs\Python\Python310\lib\site-packaging']

  5. @novice

    Questioner

    @nak435 さん
    追加のコメントありがとうございます。

    import numpy
    print(numpy.file)

    で出力されたファイルパスをappendしましたが、これまでと同じエラーが出てしまいました。。。

  6. 出力されたファイルパスをappendしましたが、これまでと同じエラーが出てしまいました。。。

    出力されたファイルパスはなんでした?
    print(numpy.__file__)です。

  7. @novice

    Questioner

    @nak435さん
    ご返信ありがとうございます。
    ファイルパスは以下になりました。

    C:\Users\ユーザー名\AppData\Local\Programs\Python\Python310\lib\site-packages\numpy_init_.py

  8. 大文字小文字が違いました。
    下記コードをコピペして再度vscodeで実行してみてください。

    import sys
    sys.path.append('C:\Users\ユーザー名\AppData\Local\Programs\Python\Python310\lib\site-packages')
    import numpy
    
  9. @novice

    Questioner

    @nak435 さん

    ご返信ありがとうござます。
    コピペしましたが別のエラーが出てしまい、2行目までと、import numpyから始まる3行目で2つに分けて実行したのですが、2行目までは「\」の部分を「\\」に変えることでエラーは消えました。一方で、3行目からの「import numpy」ではこれまでと同様の「ModuleNotFoundError: No module named 'numpy'」のエラーが出てしまいました。

  10. VSCodeの環境には、パスC:\Users\ユーザー名\AppData\Local\Programs\Python\Python310\lib\site-packages が存在しないということですね。

    VSCodeの環境で、pip install numpyを改めて実行する必要がありそうです。

  11. @novice

    Questioner

    @nak435 さん

    度々ご返信いただきましてありがとうございます。

    appendで「C:\Users\ユーザー名\AppData\Local\Programs\Python\Python310\lib\site-packages 」をPATHに加えてもVScodeだと実際にはappendで加われなかったということで、こいったことは珍しい状況だと思われますか?

  12. appendで「C:\Users\ユーザー名\AppData\Local\Programs\Python\Python310\lib\site-packages 」をPATHに加えてもVScodeだと実際にはappendで加われなかったということで、こいったことは珍しい状況だと思われますか?

    それは無いと思います。
    VSCode環境で下記コードを実行して、結果を教えてください。

    import os
    print(os.listdir('C:\\Users\\ユーザー名\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages'))
    
  13. @novice

    Questioner

    @nak435 さん
    ご返信ありがとうございます。長いのですが出力値は以下のように返ってきました。

    ['absl', 'absl_py-2.1.0.dist-info', 'adodbapi', 'annotated_types', 'annotated_types-0.6.0.dist-info', 'anyio', 'anyio-4.3.0.dist-info', 'argon2', 'argon2_cffi-23.1.0.dist-info', 'argon2_cffi_bindings-21.2.0.dist-info', 'arrow', 'arrow-1.3.0.dist-info', 'asttokens', 'asttokens-2.4.1.dist-info', 'astunparse', 'astunparse-1.6.3.dist-info', 'async_lru', 'async_lru-2.0.4.dist-info', 'attr', 'attrs', 'attrs-23.2.0.dist-info', 'babel', 'Babel-2.14.0.dist-info', 'beautifulsoup4-4.12.3.dist-info', 'bleach', 'bleach-6.1.0.dist-info', 'bs4', 'cachetools', 'cachetools-5.3.3.dist-info', 'certifi', 'certifi-2024.2.2.dist-info', 'cffi', 'cffi-1.16.0.dist-info', 'charset_normalizer', 'charset_normalizer-3.3.2.dist-info', 'clang', 'colorama', 'colorama-0.4.6.dist-info', 'comm', 'comm-0.2.1.dist-info', 'contourpy', 'contourpy-1.2.0.dist-info', 'cycler', 'cycler-0.12.1.dist-info', 'dacite', 'dacite-1.8.1.dist-info', 'dateutil', 'dateutil-stubs', 'debugpy', 'debugpy-1.8.1.dist-info', 'decorator-5.1.1.dist-info', 'decorator.py', 'defusedxml', 'defusedxml-0.7.1.dist-info', 'distutils-precedence.pth', 'exceptiongroup', 'exceptiongroup-1.2.0.dist-info', 'executing', 'executing-2.0.1.dist-info', 'fastjsonschema', 'fastjsonschema-2.19.1.dist-info', 'flatbuffers', 'flatbuffers-23.5.26.dist-info', 'fontTools', 'fonttools-4.49.0.dist-info', 'fqdn', 'fqdn-1.5.1.dist-info', 'gast', 'gast-0.5.4.dist-info', 'google', 'google_auth-2.28.1.dist-info', 'google_auth_oauthlib', 'google_auth_oauthlib-0.4.6.dist-info', 'google_pasta-0.2.0.dist-info', 'grpc', 'grpcio-1.62.0.dist-info', 'h11', 'h11-0.14.0.dist-info', 'h5py', 'h5py-3.10.0.dist-info', 'htmlmin', 'htmlmin-0.1.12.dist-info', 'httpcore', 'httpcore-1.0.4.dist-info', 'httpx', 'httpx-0.27.0.dist-info', 'idna', 'idna-3.6.dist-info', 'imagehash', 'ImageHash-4.3.1.dist-info', 'ipykernel', 'ipykernel-6.29.3.dist-info', 'ipykernel_launcher.py', 'IPython', 'ipython-8.22.1.dist-info', 'isapi', 'isoduration', 'isoduration-20.11.0.dist-info', 'japanize_matplotlib', 'japanize_matplotlib-1.1.3.dist-info', 'jedi', 'jedi-0.19.1.dist-info', 'jinja2', 'Jinja2-3.1.3.dist-info', 'joblib', 'joblib-1.3.2.dist-info', 'json5', 'json5-0.9.17.dist-info', 'jsonpointer-2.4.dist-info', 'jsonpointer.py', 'jsonschema', 'jsonschema-4.21.1.dist-info', 'jsonschema_specifications', 'jsonschema_specifications-2023.12.1.dist-info', 'jupyter.py', 'jupyterlab', 'jupyterlab-4.1.2.dist-info', 'jupyterlab_pygments', 'jupyterlab_pygments-0.3.0.dist-info', 'jupyterlab_server', 'jupyterlab_server-2.25.3.dist-info', 'jupyter_client', 'jupyter_client-8.6.0.dist-info', 'jupyter_core', 'jupyter_core-5.7.1.dist-info', 'jupyter_events', 'jupyter_events-0.9.0.dist-info', 'jupyter_lsp', 'jupyter_lsp-2.2.3.dist-info', 'jupyter_server', 'jupyter_server-2.12.5.dist-info', 'jupyter_server_terminals', 'jupyter_server_terminals-0.5.2.dist-info', 'keras', 'keras-2.8.0.dist-info', 'keras_preprocessing', 'Keras_Preprocessing-1.1.2.dist-info', 'kiwisolver', 'kiwisolver-1.4.5.dist-info', 'libclang-16.0.6.dist-info', 'lightgbm', 'lightgbm-3.3.1.dist-info', 'llvmlite', 'llvmlite-0.41.1.dist-info', 'markdown', 'Markdown-3.5.2.dist-info', 'markupsafe', 'MarkupSafe-2.1.5.dist-info', 'matplotlib', 'matplotlib-3.8.3.dist-info', 'matplotlib.libs', 'matplotlib_inline', 'matplotlib_inline-0.1.6.dist-info', 'mistune', 'mistune-3.0.2.dist-info', 'mpl_toolkits', 'multimethod', 'multimethod-1.11.2.dist-info', 'nbclient', 'nbclient-0.9.0.dist-info', 'nbconvert', 'nbconvert-7.16.1.dist-info', 'nbformat', 'nbformat-5.9.2.dist-info', 'nest_asyncio-1.6.0.dist-info', 'nest_asyncio.py', 'networkx', 'networkx-3.2.1.dist-info', 'notebook_shim', 'notebook_shim-0.2.4.dist-info', 'numba', 'numba-0.58.1.dist-info', 'numpy', 'numpy-1.25.2.dist-info', 'oauthlib', 'oauthlib-3.2.2.dist-info', 'opt_einsum', 'opt_einsum-3.3.0.dist-info', 'overrides', 'overrides-7.7.0.dist-info', 'packaging', 'packaging-23.2.dist-info', 'pandas', 'pandas-1.3.5.dist-info', 'pandas_profiling', 'pandocfilters-1.5.1.dist-info', 'pandocfilters.py', 'parso', 'parso-0.8.3.dist-info', 'pasta', 'patsy', 'patsy-0.5.6.dist-info', 'phik', 'phik-0.12.4.dist-info', 'PIL', 'pillow-10.2.0.dist-info', 'pip', 'pip-22.2.2.dist-info', 'pkg_resources', 'platformdirs', 'platformdirs-4.2.0.dist-info', 'prometheus_client', 'prometheus_client-0.20.0.dist-info', 'prompt_toolkit', 'prompt_toolkit-3.0.43.dist-info', 'protobuf-4.25.3.dist-info', 'psutil', 'psutil-5.9.8.dist-info', 'pure_eval', 'pure_eval-0.2.2.dist-info', 'pyasn1', 'pyasn1-0.5.1.dist-info', 'pyasn1_modules', 'pyasn1_modules-0.3.0.dist-info', 'pycparser', 'pycparser-2.21.dist-info', 'pydantic', 'pydantic-2.6.3.dist-info', 'pydantic_core', 'pydantic_core-2.16.3.dist-info', 'pygments', 'pygments-2.17.2.dist-info', 'pylab.py', 'pyparsing', 'pyparsing-3.1.1.dist-info', 'pythoncom.py', 'pythonjsonlogger', 'pythonwin', 'python_dateutil-2.8.2.dist-info', 'python_json_logger-2.0.7.dist-info', 'pytz', 'pytz-2024.1.dist-info', 'pywavelets-1.5.0.dist-info', 'pywin32-306.dist-info', 'PyWin32.chm', 'pywin32.pth', 'pywin32.version.txt', 'pywin32_system32', 'pywinpty-2.0.13.dist-info', 'pywt', 'PyYAML-6.0.1.dist-info', 'pyzmq-25.1.2.dist-info', 'pyzmq.libs', 'README.txt', 'referencing', 'referencing-0.33.0.dist-info', 'requests', 'requests-2.31.0.dist-info', 'requests_oauthlib', 'requests_oauthlib-1.3.1.dist-info', 'rfc3339_validator-0.1.4.dist-info', 'rfc3339_validator.py', 'rfc3986_validator-0.1.1.dist-info', 'rfc3986_validator.py', 'rpds', 'rpds_py-0.18.0.dist-info', 'rsa', 'rsa-4.9.dist-info', 'scikit_learn-1.0.2.dist-info', 'scipy', 'scipy-1.11.4-cp310-cp310-win_amd64.whl', 'scipy-1.11.4.dist-info', 'scipy.libs', 'seaborn', 'seaborn-0.12.2.dist-info', 'send2trash', 'Send2Trash-1.8.2.dist-info', 'setuptools', 'setuptools-63.2.0.dist-info', 'six-1.16.0.dist-info', 'six.py', 'sklearn', 'sniffio', 'sniffio-1.3.1.dist-info', 'soupsieve', 'soupsieve-2.5.dist-info', 'stack_data', 'stack_data-0.6.3.dist-info', 'statsmodels', 'statsmodels-0.14.1.dist-info', 'tangled_up_in_unicode', 'tangled_up_in_unicode-0.2.0.dist-info', 'tensorboard', 'tensorboard-2.8.0.dist-info', 'tensorboard_data_server', 'tensorboard_data_server-0.6.1.dist-info', 'tensorboard_plugin_wit', 'tensorboard_plugin_wit-1.8.1.dist-info', 'tensorflow', 'tensorflow-2.8.0.dist-info', 'tensorflow_estimator', 'tensorflow_io_gcs_filesystem', 'tensorflow_io_gcs_filesystem-0.31.0.dist-info', 'termcolor', 'termcolor-2.4.0.dist-info', 'terminado', 'terminado-0.18.0.dist-info', 'tf_estimator_nightly-2.8.0.dev2021122109.dist-info', 'threadpoolctl-3.3.0.dist-info', 'threadpoolctl.py', 'tinycss2', 'tinycss2-1.2.1.dist-info', 'tomli', 'tomli-2.0.1.dist-info', 'tornado', 'tornado-6.4.dist-info', 'tqdm', 'tqdm-4.66.2.dist-info', 'traitlets', 'traitlets-5.14.1.dist-info', 'typeguard', 'typeguard-4.1.5.dist-info', 'types_python_dateutil-2.8.19.20240106.dist-info', 'typing_extensions-4.10.0.dist-info', 'typing_extensions.py', 'uri_template', 'uri_template-1.3.0.dist-info', 'urllib3', 'urllib3-2.2.1.dist-info', 'visions', 'visions-0.7.5.dist-info', 'wcwidth', 'wcwidth-0.2.13.dist-info', 'webcolors', 'webcolors-1.13.dist-info', 'webencodings', 'webencodings-0.5.1.dist-info', 'websocket', 'websocket_client-1.7.0.dist-info', 'werkzeug', 'werkzeug-3.0.1.dist-info', 'wheel', 'wheel-0.42.0.dist-info', 'win32', 'win32com', 'win32comext', 'winpty', 'wordcloud', 'wordcloud-1.9.3.dist-info', 'wrapt', 'wrapt-1.16.0.dist-info', 'yaml', 'ydata_profiling', 'ydata_profiling-4.6.5.dist-info', 'zmq', '_argon2_cffi_bindings', '_cffi_backend.cp310-win_amd64.pyd', '_distutils_hack', '_yaml', 'pycache', '~umpy', '~umpy.libs']

  14. pprintで出力すれば見やすかったですね。ですが、numpyありますね。
    なぜnot foundになるのか謎です・・・

  15. @novice

    Questioner

    @nak435 さん
    ご返信ありがとうございます。
    謎ですよね。。。
    URLありがとうございます。実はpathの設定でextraの箇所も既に対応済みでして、
    その設定はjsonの設定と同期といいますか同じ操作になるようなので、
    最初の投稿のように「python.analysis.extraPaths」で対応しているんです。

    色々と知恵を絞ってくださってどうもありがとうございます。

以下の2点を実施していただき、それぞれの結果を教えていただけますか?

  1. venvをactiveにした状態で python -c "import numpy"
  2. venvを一度完全に削除し、venvを改めて作成、venvをactive、pip install numpypython -c "import numpy"
1

Comments

  1. @novice

    Questioner

    @midoribi さん
    ご返信いただきましてどうもありがとうございます。

    1. 実行した結果、コマンドプロンプト上では以下が次の行に表示されました。
       「(venv_py310) C:\Users\ユーザー名\venv_py310>」
       
       その後VScode上でインタプリタが「(venv_py310)Python 3.10.8 」である上で   
       「import numpy」を実施しましたが、これまでと同じ以下エラーが出ました。
       「ModuleNotFoundError: No module named 'numpy'」

    2.結論、2.の方法にて解決し無事numpyをimportすることができました。
      
      試行錯誤で1つずつ試そうと思っていましたが、最初の以下検討で解決しました。
      
      元のvenvを削除せずに新たに「venv1_py310」の仮想環境を作り、Active状態の下
      「pip install numpy」を実施。vscodeでインタプリタの設定を
      「(venv1_py310)Python 3.10.8 」で確認の上、「import numpy」を実行。
      
      結果、エラーなく実行することができ、念のため実行した「numpy zeros(3)」の
      入力値に対してもしっかりエラーなく出力値が返ってきました。

    <お礼>
    @midoribiさん、的確なアドバイスと素早い解決方法をご提示いただきましてどうもありがとうございました。独学でPythonを始め3か月が経ちましたが、今回の問題を解決するのに時間にして10時間以上かかり、目的となる作業の前段階で躓いたため、Jupyter-labを使うなど代替方法を考えているところでした。その中でmidoriさんのアドバイスによって10分もかからずに問題を解決できてとても嬉しかったです。色々と勉強になりました。
    本当にどうもありがとうございました。

      

  2. 本題が解決したのでしたら、本問をクローズにしましょう。

VSCodeの問題じゃなくて、pipの問題のような気がします。

Location: c:\users\ユーザー名\appdata\local\programs\python\python310\lib\site-packages

これを見る限り、仮想環境の中にインストールされていません。
pipが仮想環境のものでないのではないですか。

pip debug を実行すれば情報が出てきます。
その中で、

sys.executable: /path/to/python

というように、どのpythonに対するpipコマンドか、わかります。
ちゃんと仮想環境の中のpythonか、確認してください。

確認ですが、pipコマンドを実行する前に、activateを実行していますか?
コマンドプロンプトを終了して、立ち上げ直した際には、再度実行する必要がありますよ。

0

Comments

  1. @novice

    Questioner

    @katsuko0303 さん
    ご返信ありがとうございます。

    ①「pipが仮想環境のものでないのではないですか。」についてですが、
    仮想環境下かつActiveな状態でpip installしたと記憶しています。
    これには3つの状況から間違いないと思っておりまして、

    1つ目は、
    コマンドプロンプトにて「(venv_py310) C:\Users\ユーザー名\venv_py310>pip list」を実行するとNumpyなどの各種インストールしたライブラリ一覧が表示されるためです。先頭に(venv_py310)がついているようにactive下であることがわかると思います。

    2つ目は、
    「Location: c:\users\ユーザー名\appdata\local\programs\python\python310\lib\site-packages」について最下層のディレクトリにあるNumpyライブラリのフォルダを1つ上の「lib」階層にコピーペーストで入れるとVScode上でNumpyのimportがエラーなく実行できるためです。これも仮想環境下かつactive状態で確認できています。

    3つ目は、仮想環境下かつAactive状態でVScodeでなくwebブラウザ上のjupyter-labを使った場合は、import numpyが問題なく使えるためです。

    以上3点から、pipが仮想環境下かつactiveな状態で各ライブラリがInstallされたものと考えております。

    ②「ちゃんと仮想環境の中のpythonか、確認してください。」についてですが、
    pip debugでどんな処理が行われるのかちょっと調べたんですが、よくわからなかったので
    コマンドプロンプト等でその操作はしていないのですが、以下の入力は試しました。

    import sys
    sys.executable

    すると、「'c:\Users\ユーザー名\venv_py310\Scripts\python.exe'」と返ってきました。またVScode上のインタプリタは「(venv_py310)Python 3.10.8 」との記載があり、仮想環境の中のpythonであると思っていたのですが、初心者なものでこのようなところで、確認できていると思って大丈夫でしょうか。

  2. ①の3つの話ですが、まず2つ目は全く意味はありません。
    仮想環境だろうがそうでなかろうが、pythonがインストールされているディレクトリのlib直下のモジュール・パッケージは必ずimportできます。

    3つ目に関して、自分はjupyterlabは知りませんが、nak435さんとのやり取りを見る限りjupyterlab上の動作は仮想環境上でない可能性が高いです。

    1つ目は根拠になりそうですが、問題が起きているのであれば、本当に正しいのか疑うべきです。
    ちなみに、「c:\Users\ユーザー名\venv_py310\Scripts\pip.exe」は存在していますか?存在していなければ、この根拠も怪しくなります。

    そういう意味で、一番欲しい情報は「実行したpipがどのpython.exeに依存しているか」であり、それを得るために pip debug を実行してみてほしいと言ったのです。
    そんなに難しい話をしているつもりはありません。pip installpip show と同じ要領で pip debug を実行すれば、つらつらと色んな情報が出力されます。
    その中で「sys.executable:」で始まる行に、先程言った「依存しているpython.exe」が出力されますので、それが本当に仮想環境のpython.exeなのか、確認してください。

  3. @novice

    Questioner

    ご返信ありがとうございます。

    コマンドで以下を実行しました。
    (venv_py310) C:\Users\ユーザー名\venv_py310>pip debug
    すると、「sys.executable:」で始まる行については以下の出力がありました。
    sys.executable: C:\Users\ユーザー名\AppData\Local\Programs\Python\Python310\python.exe

    念のため、以下のようにpipでnumpyのinstallを再度仮想環境下で行いましたが、
    (venv_py310) C:\Users\ユーザー名\venv_py310>pip install numpy
    出力値は以下のように返ってきました。
    Requirement already satisfied: numpy in c:\users\ユーザー名\appdata\local\programs\python\python310\lib\site-packages (1.25.2)
    このあと、VScodeにて「import numpy」を入力しましたが、これまでとエラー名に変わりなく、インポートできませんでした。

  4. やはり、仮想環境でも本環境のpipが動作しているため、本環境の方にパッケージがインストールされています。

    なんでそんな状態になっているかはわかりません(前に言ったとおり、仮想環境のpipがなくなっている?)が、pipの代わりにpython -m pipを実行するようにしてください。
    (もちろん、pythonは仮想環境のpythonになるよう、仮想環境にした状態で、です)

    python -m pip install numpy
    
  5. @novice

    Questioner

    @katsuko0303 さん
    コメントありがとうございます。
    今回別の方の方法にてVScode上かつ仮想環境下で無事numpyをimportすることができました。
    知らない知識など@katsuko0303さんから色々学ぶこともあり、とてもためになりました。
    ご尽力いただきましてどうもありがとうございました。

もしかすると方向性が少しズレてるかもしれませんが提案として。

venvで仮想環境を構築しているのならVSCodeもvenvを認識してる必要があります。

image.png

(画像左上が.pyファイル単体を開いたとき、右下がプロジェクトとしてvenvを認識している状態)

プロジェクト固有の設定settings.jsonpython.defaultInterpreterPathにvenvしたpythonのパスを持たせれば元々のsettings.jsonを汚染せずに済みますし、venvとして優先的に認識します。

プロジェクトのフォルダ\.vscode\settings.json
{
	"python.defaultInterpreterPath": "path\\to\\.pyvenv\\Scripts\\python.exe",
}

ただしプロジェクトしてではなくファイル単体を開くと認識することはありません(画像左上のようになるだけです)。
そしてvenvで必要なlibraryなどをインストールします。

プロジェクトの作成方法はここでは記載しません。探せば幾らでも出てきます。

0

Comments

  1. @novice

    Questioner

    @STSyntheさん

    ご返信ありがとうございます。
    ファイル単体では、「Python 3.12.1」で、
    プロジェクトとしては「(venv_py310)Python 3.10.8 」
    とVScodeは認識しているようで上記の記載がありました。

    お話にあった、「venvしたpythonのパス」についてですが、
    こちらは、「where python」などで実行した結果になりますでしょうか。
    この入力値に対する出力値は以下になりました。

    c:\Users\ユーザー名\venv_py310\Scripts\python.exe
    C:\Users\ユーザー名\AppData\Local\Programs\Python\Python310\python.exe
    C:\Users\ユーザー名\AppData\Local\Programs\Python\Python312\python.exe
    C:\Users\ユーザー名\AppData\Local\Microsoft\WindowsApps\python.exe

    これらをjsonの中の「"python.defaultInterpreterPath":」の項目にて書き加える必要があるという認識で大丈夫でしょうか。

    よろしくお願いいたします。

  2. 「venvしたpythonのパス」についてですが、
    こちらは、「where python」などで実行した結果

    c:\Users\ユーザー名\venv_py310\Scripts\python.exe

    ふつうはユーザーディレクトリ直下に仮想環境を作成しません。

    そもそも仮想環境がどういうモノなのか理解できてますか?

    Pythonにおいての仮想環境は通常プロジェクトなどのフォルダ内にvenvを作成します。

    これらをjsonの中の「"python.defaultInterpreterPath":」の項目にて書き加える必要があるという認識で大丈夫でしょうか。

    違います。

    前提としてPythonの仮想環境(venv)を理解しておく必要があります。

    例えばプロジェクトのフォルダをD:\python_workspace\testに作成してこの中にvenvを作成するとします → path\to\python.exe -m venv D:\python_workspace\test\.pyvenv

    プロジェクトのフォルダ内に.vscode作成して先のsettings.jsonにパス(この例であれば"D:\\python_workspace\\test\\.pyvenv\\Scripts\\python.exe")を指定すればプロジェクト固有の設定を持たすことは出来ます。

    フォルダ構成例
    D:\python_workspace\test
    │  app.py
    │
    ├─.pyvenv
    │  │  pyvenv.cfg
    │  │
    │  ├─Include
    │  ├─Lib
    │  └─Scripts
    └─.vscode
            settings.json
    

    先に申し上げたようにプロジェクトの作成方法はここでは記載しませんし、Pythonの仮想環境についても理解が不足してるように思えます。
    これらの点は検索して探せば幾らでもでてきますので、その上で何がわからなかったのか要点をまとめて新たに質問たてて下さい。

  3. @novice

    Questioner

    @STSynthe さん
    色々と勉強不足ですみません。
    別の方の方法にてなんとか解決に至れました。
    STSyntheさんのコメントで色々勉強になることが多かったです。
    どうもありがとうございました。

Your answer might help someone💌