首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >系统中pyenv下的jupyter笔记本只给系统python

系统中pyenv下的jupyter笔记本只给系统python
EN

Stack Overflow用户
提问于 2018-05-08 21:26:28
回答 2查看 1.3K关注 0票数 3

我把朱庇特笔记本安装在化名jupyter下。如果我从控制台运行它(没有pyenv激活jupyter,笔记本使用相同的端口):

代码语言:javascript
复制
$ export PATH=/home/mortenb/.pyenv/versions/jupyter/bin:$PATH
$ /home/mortenb/.pyenv/versions/jupyter/bin/jupyter-notebook \
  --config=/etc/jupyter/jupyter_notebook_config.py

!python --version
Python 3.6.5

!jupyter --paths
config:
    /home/mortenb/.jupyter
    /home/mortenb/.pyenv/versions/3.6.5/envs/jupyter/etc/jupyter
    /usr/local/etc/jupyter
    /etc/jupyter
data:
    /home/mortenb/.local/share/jupyter
    /home/mortenb/.pyenv/versions/3.6.5/envs/jupyter/share/jupyter
    /usr/local/share/jupyter
    /usr/share/jupyter
runtime:
    /run/user/1000/jupyter

正确的内核一切都很好。

但是,如果我用一个systemd脚本、相同的用户、同一个可执行文件来实现这一点:

代码语言:javascript
复制
# cat /lib/systemd/system/jupyter_notebook.service 
[Unit]
Description=jupyter notebook as a service

[Service]
PATH=/home/mortenb/.pyenv/versions/jupyter/bin:$PATH
Type=simple
User=mortenb
Group=mortenb
PIDFile=/var/run/jupyter_notebook.pid
ExecStart=/home/mortenb/.pyenv/versions/jupyter/bin/jupyter-notebook --config=/etc/jupyter/jupyter_notebook_config.py 

[Install]
WantedBy=multi-user.target

我得到python 2.7.12 (系统python与Ubuntu16.04)

代码语言:javascript
复制
!python --version
Python 2.7.12

!jupyter --paths
config:
    /home/mortenb/.jupyter
    /usr/etc/jupyter
    /usr/local/etc/jupyter
    /etc/jupyter
data:
    /home/mortenb/.local/share/jupyter
    /usr/local/share/jupyter
    /usr/share/jupyter
runtime:
    /home/mortenb/.local/share/jupyter/runtime

在这两个例子中,jupyter-记事本都有如下的示例:

代码语言:javascript
复制
#!/home/mortenb/.pyenv/versions/3.6.5/envs/jupyter/bin/python

是否知道系统启动为何不同。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-09 11:53:39

PATH=/home/mortenb/.pyenv/versions/jupyter/bin:$PATH服务ExecStart=/home/mortenb/.pyenv/versions/jupyter/bin/jupyter-notebook --config=/etc/jupyter/jupyter_notebook_config.py _ <...> Type=simple User=mortenb Group=mortenb PIDFile=/var/run/jupyter_记事本.var

您的单元文件在语法上不正确。

没有PATH=指令(参考文献)。( (5))在系统单元文件中。您必须使用Environment=指令来指定环境变量。

而系统d似乎不支持扩张。

实际上,systemd确实支持Environment=和其他几个指令中的环境变量扩展。但是,您必须使用${FOO}作为单词的一部分;$FOO只被认为是它自己的一个单词。参考(5)

支持基本环境变量替换。在命令行上使用"${FOO}“作为单词的一部分,或作为它自己的单词,在这种情况下,它将被环境变量的值所取代,包括它包含的所有空格,从而产生一个参数。在命令行中使用"$FOO“作为单独的单词,在这种情况下,它将被在空格处拆分的环境变量的值所取代,从而导致零或多个参数。对于这种类型的扩展,引号是尊重时分裂成文字,然后删除。

票数 3
EN

Stack Overflow用户

发布于 2018-05-09 06:49:29

问题是路径,设置路径与在shell中运行时相同。而系统d似乎不支持扩张。

替换jupyter_notebook.service中的路径行解决了我的问题:

代码语言:javascript
复制
Environment='PATH=/home/mortenb/.pyenv/versions/jupyter/bin:/home/mortenb/.pyenv/plugins/pyenv-virtualenv/shims:/home/mortenb/.pyenv/shims:/home/mortenb/.pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50242491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档