python - Windows Subsystem for Linux 上的 Anaconda 环境作为 PyCharm 中的 python 解释器和 Jupyter Notebook 中的内核
问题描述
概括
我想使用 Windows Subsystem for Linux (WSL) 中的 anaconda 环境作为 PyCharm 的 Python 解释器和 Jupyter Notebook 的内核。
我试过的
tacs-v2
我的WSL(Ubuntu 20.04.3 LTS)上有一个名为 anaconda 的环境。我创建这个环境是为了安装一个名为TACS的开源有限元代码,它只能在 Linux 上编译(因此使用了 WSL)。
我想使用 PyCharm 作为与 TACS 相关的一些 python 脚本的 IDE,并且我已经能够按照这些说明tacs-v2
在 Windows 上的 PyCharm Professional 中配置为远程解释器。
我还想创建一些与 TACS 相关的 Jupyter Notebooks。我第一次尝试使用 PyCharm(在 Windows 上)作为 Jupyter Notebook 的编辑器,但是当我执行它时出现以下错误:
当我尝试为 Jupyter 服务器配置解释器时,我发现由于某些原因我的远程解释器tacs-v2
无法使用:
由于 PyCharm 不工作,我考虑直接从 WSL 启动 Jupyter Notebook。我遵循了本指南,并成功地运行了笔记本,但有一个警告。在我笔记本的开头,以下导入语句最初导致ModuleNotFoundError
:
from tacs import TACS, elements, constitutive, functions
其中tacs
是构成有限元代码的包,它对应于本地存储库中的一个目录。有关其结构的表示,请参见下文:
tacs-2.0.0/
|-- build/
|-- docs/
|-- examples/
|-- ...
|-- tacs/
|-- __init__.py
|-- constitutive.cpp
|-- constitutive.cpython-38-x86_64-linux-gnu.so
|-- constitutive.pxd
|-- constitutive.pyx
|-- ...
使用 PyCharm 在 python 脚本中运行相同的导入语句很好。我在这个答案中找到了解决方案。其实跑步
import sys
print(sys.path)
使用 PyCharm (Windows) 和 Jupyter (WSL) 返回不同的结果。前者回来了
['/mnt/c/Users/qa21944/git/tacs-2.0.0/examples/crm',
'/mnt/c/Program Files/JetBrains/PyCharm 2021.2.2/plugins/python/helpers/pydev',
'/mnt/c/Users/qa21944/git/tacs-2.0.0',
'/mnt/c/Program Files/JetBrains/PyCharm 2021.2.2/plugins/python/helpers/pycharm_display',
'/mnt/c/Program Files/JetBrains/PyCharm 2021.2.2/plugins/python/helpers/third_party/thriftpy',
'/mnt/c/Program Files/JetBrains/PyCharm 2021.2.2/plugins/python/helpers/pydev',
'/mnt/c/Users/qa21944/AppData/Local/JetBrains/PyCharm2021.2/cythonExtensions',
'/mnt/c/Users/qa21944/git/tacs-2.0.0/examples/crm',
'/home/fmamitrotta/anaconda3/envs/tacs-v2/lib/python38.zip',
'/home/fmamitrotta/anaconda3/envs/tacs-v2/lib/python3.8',
'/home/fmamitrotta/anaconda3/envs/tacs-v2/lib/python3.8/lib-dynload',
'/home/fmamitrotta/anaconda3/envs/tacs-v2/lib/python3.8/site-packages',
'/mnt/c/Program Files/JetBrains/PyCharm 2021.2.2/plugins/python/helpers/pycharm_matplotlib_backend',
'/home/fmamitrotta/anaconda3/envs/tacs-v2/lib/python3.8/site-packages/IPython/extensions']
而后者返回
['/mnt/c/Users/qa21944/git/tacs-2.0.0/examples/crm',
'/home/fmamitrotta/anaconda3/envs/tacs-v2/lib/python38.zip',
'/home/fmamitrotta/anaconda3/envs/tacs-v2/lib/python3.8',
'/home/fmamitrotta/anaconda3/envs/tacs-v2/lib/python3.8/lib-dynload',
'',
'/home/fmamitrotta/anaconda3/envs/tacs-v2/lib/python3.8/site-packages',
'/home/fmamitrotta/anaconda3/envs/tacs-v2/lib/python3.8/site-packages/IPython/extensions',
'/home/fmamitrotta/.ipython']
所以我不得不sys.path.append('/mnt/c/Users/qa21944/git/tacs-2.0.0')
在我的笔记本中的 import 语句之前添加。
问题
- Microsoft 文档建议不要跨操作系统工作。因此,我会说我在 WSL 上拥有 anaconda 环境以及在 Windows 上拥有本地存储库和 PyCharm 的设置并不理想。既然我无法避免使用 WSL,我可以在那里拥有一切吗?不幸的是,似乎将 PyCharm 与 WSL 一起使用的唯一方法是在 Windows 上安装 PyCharm Professional,并通过 WSL 配置远程解释器。
- 为什么 PyCharm 不允许我将远程解释器(我的
tacs-v2
)设置为 Jupyter 服务器的解释器? - 为什么
print(sys.path)
使用 PyCharm(在 Windows 上)和 Jupyter(在 WSL 上)运行时会得到不同的输出?有没有办法可以避免tacs-2.0.0
在导入语句之前手动添加笔记本中目录的路径?
解决方案
推荐阅读
- java - ClassNotFoundException: com.auth0.jwt.exceptions.JWTCreationException 与 DocuSignApi Java SDK
- import - Prestashop 1.7 在导入期间无法加载模板
- sql - Oracle从多个表中删除行
- javascript - D3 可折叠树 - 一次折叠一层
- r - 在 facet_wrap 中命名构面
- java - java - 如何在不覆盖java文件中写入的数据的情况下将对象(不是字符串类型)附加到现有文件中?
- javascript - 另一个函数中的Javascript返回函数
- matplotlib - Seaborn 线图使用中位数而不是平均值
- node.js - 如何为 child_process.exec 指定 shell 可执行文件?
- python - 从模型对象中使用 python 在 json 中创建树