パッケージ マネージャー conda を使用して、venv 内の Python のインタラクティブ ノートブック (= Jupyter Notebook、iPython) で VSCode で postgreSQL SQL 式をテストするにはどうすればよいですか?

パッケージ マネージャー conda を使用して、venv 内の Python のインタラクティブ ノートブック (= Jupyter Notebook、iPython) で VSCode で postgreSQL SQL 式をテストするにはどうすればよいですか?

パッケージ マネージャー conda を使用して、venv 内の Python のインタラクティブ ノートブック (= Jupyter Notebook、iPython) で VSCode で postgreSQL SQL 式をテストするにはどうすればよいですか?

答え1

散在するガイドやヒントからこれを設定するのに時間がかかりすぎたので、これを共有します。


  • 任意のconda環境に変更します。たとえば、次のような仮想環境を作成します。ベンv310(回答全体で同じ名前) を で実行しconda create -n venv310 python=3.10、次のようにアクティブ化しますconda activate venv310

venv310を有効化したターミナルからVSCodeを開くと、コードを実行するとすぐにVSCodeはベース環境に戻ります。Shift+Enter:

(base) … $ /bin/python3
Python 3.10.6 (main, Nov 14 2022, 16:10:14) [GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from sqlalchemy import create_engine

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'sqlalchemy'
  • を持たずにベンv310ここでの作業では、このエラーから、誤って取得したベース環境にsqlalchemyモジュールが必要であることがすでに明らかであるため、ベンv310:
conda install sqlalchemy
  • そして、後のエラーから、方言「psycopg2」もインストールする必要があることが判明しました。
    raise exc.NoSuchModuleError(
sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:postgres.psycopg2
conda install psycopg2
  • 代わりに '%load_ext sql' のようなマジックを実行すると、次のように表示されます。
>>> %load_ext sql
  File "<stdin>", line 1
    %load_ext sql
    ^
SyntaxError: invalid syntax
  • とにかく、主な問題は仮想環境が機能しないことです。したがって、VSCode / VSCodium拡張機能「Python for VSCode」をインストールしてください。VsCode で Anaconda 環境をアクティブ化する
  • VSCode を再起動します。
  • クリックはい次のような表示が出た場合:

ここに画像の説明を入力してください

conda 環境を使用していることがわかりました。統合ターミナルでこの環境で問題が発生している場合は、ユーザー設定で Python 拡張機能の「terminal.integrated.inheritEnv」を false に変更することをお勧めします。

ソース: Python (拡張機能) はい いいえ 詳細情報

  • プレスCtrl+Shift+P→「Python: インタープリターを選択」→選択ベンv310(これは以前からできていたことですが、今ではコードを実行するときにベース環境にフォールバックしなくなりました)。VsCode で Anaconda 環境をアクティブ化する - Stack Overflow

  • インタラクティブウィンドウを開くCtrl+Shift+P→「Jupyter: インタラクティブウィンドウの作成」

ここに画像の説明を入力してください

%load_ext sql通常のPythonコードエディタで行を右クリックするだけで対話型ウィンドウが起動します。または、Shift+Enterその行に。

見るVisual Studio Code で Python インタラクティブ モードを検索/実行するにはどうすればよいですか? - Stack Overflow

次に次のように表示されます:

ここに画像の説明を入力してください

'Python 3.10.6 ('venv310')' でセルを実行するには、ipykernel パッケージが必要です。

クリックインストール

  • よく分からないけどクリックしたと思うインストール、iPython の履歴にはまだ表示されています:

ここに画像の説明を入力してください

'Python 3.10.6 ('venv310')' でセルを実行するには、ipykernel パッケージが必要です。
次のコマンドを実行して、Python 環境に 'ipykernel' をインストールします。
コマンド: 'conda install -n venv310 ipykernel --update-deps --force-reinstall'

# %% Python 3.10.8 (main, 2022 年 11 月 24 日、14:13:03) [GCC 11.2.0]
詳細については、「copyright」、「credits」、または「license」と入力してください
IPython 8.7.0 -- 強化されたインタラクティブ Python。ヘルプを表示するには「?」と入力してください。

したがって、あなたもこれを見たらconda install -n venv310 ipykernel --update-deps --force-reinstallベンv310

  • %load_ext sqlターミナルに入力するか、Python エディターからマジックを実行して、iPython ターミナルで実行します(対話型ウィンドウで実行する方法を確認するには、右クリックを確認してください)。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

次のような表示が出た場合:

ここに画像の説明を入力してください

Output exceeds the size limit. Open the full output data in a text editor
---------------------------------------------------------------------------
ModuleNotFoundError                     Traceback (most recent call last)
Cell In[2], line 1
----> 1 get_ipython().run_line_magic('load_ext', 'sql')

File ~/anaconda3/envs/venv310/lib/python3.10/site-packages/IPython/core/interactiveshell.py:2364, in InteractiveShell.run_line_magic(self, magic_name, line, _stack_depth)
   2362     kwargs['local_ns'] = self.get_local_scope(stack_depth)
   2363 with self.builtin_trap:
-> 2364     result = fn(*args, **kwargs)
   2365 return result

File ~/anaconda3/envs/venv310/lib/python3.10/site-packages/IPython/core/magics/extension.py:33, in ExtensionMagics.load_ext(self, module_str)
    31 if not module_str:
    32  raise UsageError('Missing module name.')
---> 33 res = self.shell.extension_manager.load_extension(module_str)
    35 if res == 'already loaded':
    36  print("The %s extension is already loaded. To reload it, use:" % module_str)

File ~/anaconda3/envs/venv310/lib/python3.10/site-packages/IPython/core/extensions.py:76, in ExtensionManager.load_extension(self, module_str)
    69 """Load an IPython extension by its module name.
    70
    71 Returns the string "already loaded" if the extension is already loaded,
    72 "no load function" if the module doesn't have a load_ipython_extension
    73 function, or None if it succeeded.
    74 """
...
File <frozen importlib._bootstrap>:1027, in _find_and_load(name, import_)

File <frozen importlib._bootstrap>:1004, in _find_and_load_unlocked(name, import_)

ModuleNotFoundError: No module named 'sql'

または、次のマジックを実行して、次のいずれかが表示される場合:

# %%
%sql postgresql+psycopg2://localhost/&server=postgres?user=postgres&port=5432&password=postgres&database=test_db
UsageError: Line magic function `%sql` not found.

# %%
%%sql select * FROM x;
UsageError: Cell magic `%%sql` not found.

# %%
result = %sql select * FROM x;
UsageError: Line magic function `%sql` not found.

次に、ベンv310:

conda install -c conda-forge ipython-sql

(そしてpipenv install ipython-sqlipython-sql ガイド

見るUsageError: ラインマジック関数%sqlが見つかりません - Stack Overflow

  • VSCode に戻ると、次のように表示されます。

ここに画像の説明を入力してください

しかし、それは害にはなりません。

  • 再実行:
%load_ext sql

ここに画像の説明を入力してください

  • そして: %sql postgresql+psycopg2://localhost/&server=postgres?user=postgres&port=5432&password=postgres&database=test_db

ここに画像の説明を入力してください

(見る:PostgreSQL 接続文字列 / URL の形式は何ですか? - Stack Overflow

  • これで、iPython コンソールで SQL 出力を確認できます。
%sql select * FROM x;

ここに画像の説明を入力してください

出力はその後に表示されます。表示制限については、ipython-sql ガイド-->「構成」。

関連情報