我正在使用pyenv
创建一个虚拟环境。
我的pyenv软件包位于bio
中的项目/.pyenv/versions/bio/lib/python3.7/site-packages
下
我使用以下方法安装了findspark
pip install findspark #it was installed successfully.
我可以在packages目录中看到以下文件。
findspark-1.4.2.dist-info
findspark.py
但是,当我从pyenv目录启动Jupyter Notebook时,会出现错误消息
import findspark
findspark.init()
导入错误:没有名为findspark的模块
能不能帮我理解,尽管pip安装成功,为什么还会出现此错误?
我的which Jupyter
返回以下路径(在终端和Jupyter笔记本中)
`/home/abcd/.pyenv/shims/jupyter
答案 0 :(得分:1)
即使您在终端会话中激活了virtualenv
,Jupyter笔记本也不会从virtualenv
内部启动。
如果您import sys
并打印出sys.executable
,您将意识到python可执行文件的第一个值不是virtualenv
的第一个值。
您需要将python
中的virtualenv
添加为内核。
$ virtualenv -p python3 pysparkvenv
$ source pysparkvenv/bin/activate
(pysparkvenv) $ pip install findspark jupiter # etc.
(pysparkvenv) $ python -m ipykernel install --user
(pysparkvenv) $ which python
/home/disciple/Desktop/sample/pysparkvenv/bin/python
# make the necessary change to the python path
(pysparkvenv) $ sudo /home/disciple/Desktop/sample/pysparkvenv/bin/python -m ipykernel install --name pysparkvenv
这将创建一个新内核,该内核将在下拉列表中可用。
您可以检查内核是否以此方式创建
$ jupyter kernelspec list
Available kernels:
python3 /home/disciple/.local/share/jupyter/kernels/python3
pysparkvenv /usr/local/share/jupyter/kernels/pysparkvenv
此后,您可以从任何地方启动jupyter notebook
,并且将有新的内核可用。选择此选项,您将拥有在virtualenv内部安装的所有模块。