sqlite VS代码Jupyter集成不考虑自定义LD_LIBRARY_PATH

bcs8qyzn  于 2023-02-09  发布在  SQLite
关注(0)|答案(2)|浏览(217)

我最近为运行AmazonLinux2的开发设置了一个新的EC2示例。(https://orion-docs.prefect.io/)我必须安装SQLite3的最新版本,这是我从源代码编译的。然后我将LD_LIBRARY_PATH环境变量设置为"/usr/local/lib ",并使用LDFLAGS和CPPFLAGS编译器参数安装Python 3. 10. 5以包括该文件夹,以便python找到新的sqlite库。到目前为止一切都很好,当从终端运行jupyter notebook服务器或prefect orion服务器时,一切都工作正常。如果我想从VS Code使用集成的jupyter环境,我会遇到内核无法启动的问题:
无法启动内核。
导入错误:/home/米克尔j/. pyenv/版本/3.10.5/库/Python 3.10/动态加载库/_ sqlite3.cpython-310-x86_64-Linux-gnu.所以:未定义符号:sqlite3跟踪版本2。
这让我相信使用了系统sqlite库,因为这和我取消设置LD_LIBRARY_PATH env变量时得到的错误是一样的。但是当调用ldd /home/mickelj/.pyenv/versions/3.10.5/lib/python3.10/lib-dynload/_sqlite3.cpython-310-x86_64-linux-gnu.so时,我得到了以下错误:
Linux操作系统-虚拟磁盘存储器

    • 数据库服务器地址=〉/usr/local/lib/数据库服务器地址(0x00007f96a3339000)**

数据库地址=〉/lib64/数据库地址(0x00007f96a311b000)
数据库地址=〉/lib64/libc.so.6(0x00007f96a2d6e000)
数据库地址=〉/数据库64/数据库地址
数据库地址=〉/lib64/数据库地址(0x00007f96a2819000)
数据库地址=〉/lib64/数据库地址
/lib64/ld-linux-x86 - 64.so.2文件夹(0x00007文件夹)
新sqlite3库被正确引用的地方。如果我取消设置LD_LIBRARY_PATH变量,第二行将变为:

    • 数据库配置文件=〉/数据库64/数据库配置文件(0x00007f9dce52e000)**

所以我的猜测是VS Code jupyter集成没有考虑环境变量,所以我的问题是:是否有办法在运行时或其他任何地方为VS代码或内置的jupyter服务器全局指定它们(特别是LD_LIBRARY_PATH)来解决这个问题?

wlzqhblo

wlzqhblo1#

最近,jupyter正在修复与.env相关的问题。
您可以尝试安装**vscode insidersjupyter扩展的预发行版本**。

6vl6ewon

6vl6ewon2#

使用ipykernel创建一个带有env变量的定制内核规范,我就解决了这个问题。
步骤:
1.为您的环境创建一个内核规范。

conda activate myenv # checkout that venv, using conda as an example

# pip install ipykernel # in case you don't have one

python -m ipykernel install --user --name myenv_ldconf

1.编辑kernelspec文件,在对象中添加env变量

nano ~/.local/share/jupyter/kernels/myenv_ldconf/kernel.json

您将看到如下内容:

{
 "argv": [
  "/home/alice/miniconda3/envs/myenv/bin/python",
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}"
 ],
 "display_name": "myenv_ldconf",
 "language": "python",
 "metadata": {
  "debugger": true
 }
}

添加env变量后:

{
 "argv": [
  "/home/alice/miniconda3/envs/myenv/bin/python",
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}"
 ],
 "display_name": "myenv_ldconf",
 "language": "python",
 "env": {"LD_LIBRARY_PATH": "/home/alice/miniconda3/envs/myenv/lib"},
 "metadata": {
  "debugger": true
 }
}

参考:How to set env variable in Jupyter notebook
1.将vscode中的内核更改为myenv_ldconf

相关问题