1
menc 2019-02-19 16:36:06 +08:00
一般这种问题都是 python 版本的问题,实际调用的是 python2
|
2
wellsc 2019-02-19 16:43:38 +08:00
def 上面加一行:
``` python import sys;print(sys.version) ``` |
3
kblacksheep OP @menc
感谢大佬。。还真是 centtos 下 sudo 会切换到 python2.6 版本 |
4
kblacksheep OP @wellsc
谢谢!~ |
5
KevinBu 2019-02-19 17:20:31 +08:00
用 centos 还是加上 virtualenv 比较好~ 不至于版本混乱
|
7
Kilerd 2019-02-19 22:21:26 +08:00 1
@KevinBu #5 无论在哪里都应该用 pipenv + venv(virtualenv) 或者 pyenv + virtualenv 来隔离 Python 版本和依赖库
BTW,都 8102 年了,还不上 docker,还在等什么 |
8
kblacksheep OP @Kilerd
其实已经用了 pipenv 和 pyenv 来管理了 但是直接 sudo python 还是执行的 2.6 版本的。。docker 确实得学学了 哈哈哈 |
9
Osk 2019-02-20 00:13:17 +08:00
不写 #!/usr/bin/env python3 吗? 还是虚拟环境创建的是 python2 ?
|
10
kblacksheep OP @Osk
虚拟环境是 python3 但是激活虚拟环境之后再用 sudo python 还是 2 版本的。。我用 which python 得到 python3 的路径之后再 sudo 完整路径调用就行了 #!/usr/bin/env python3 我没写 明天试试看 谢谢大佬 |
11
lujiajing1126 2019-02-20 01:14:18 +08:00
jenkins 可以安装 pyenv 的插件,直接放在 pipeline 里面跑
|
12
kblacksheep OP @lujiajing1126
卧槽还有这插件 我去看下 我现在都是在 jenkinsfile 里激活环境。。。 |
13
kblacksheep OP @lujiajing1126
看错了 我以为是 pipenv.... |
14
Osk 2019-02-20 12:03:25 +08:00 1
@kblacksheep 如果是虚拟环境的话, 可以这样 sudo, 不需要修改脚本的#!/路径:
sudo bash -c ". my_venv/bin/activate;python /path/to/script.py" 由于安全原因, sudo 好像是不会继承当前 shell 的 PATH 变量, 而 virtualenv 需要将虚拟环境的 python 路径放在 PATH 最前面 |