V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kblacksheep
V2EX  ›  程序员

Python 的 type hint 在 centos 下报错是啥情况,求解

  •  
  •   kblacksheep · 2019-02-19 16:34:13 +08:00 · 2638 次点击
    这是一个创建于 1864 天前的主题,其中的信息可能已经有所发展或是发生改变。
    File "/var/lib/jenkins/workspace/git_pipline/BeautifulReport/BeautifulReport.py", line 93
    def __repr__(self) -> str:
    ^
    SyntaxError: invalid syntax

    -> 和: 这两个在本地用 pycharm 都没问题,但是放在服务器直接运行就会提示 SyntaxError: invalid syntax,Python 版本都是 3.6.8 求大佬指导一下
    15 条回复    2019-02-20 13:11:10 +08:00
    menc
        1
    menc  
       2019-02-19 16:36:06 +08:00
    一般这种问题都是 python 版本的问题,实际调用的是 python2
    wellsc
        2
    wellsc  
       2019-02-19 16:43:38 +08:00
    def 上面加一行:
    ``` python
    import sys;print(sys.version)
    ```
    kblacksheep
        3
    kblacksheep  
    OP
       2019-02-19 17:11:52 +08:00   ❤️ 1
    @menc
    感谢大佬。。还真是 centtos 下 sudo 会切换到 python2.6 版本
    kblacksheep
        4
    kblacksheep  
    OP
       2019-02-19 17:12:01 +08:00
    @wellsc
    谢谢!~
    KevinBu
        5
    KevinBu  
       2019-02-19 17:20:31 +08:00
    用 centos 还是加上 virtualenv 比较好~ 不至于版本混乱
    wellsc
        6
    wellsc  
       2019-02-19 19:02:37 +08:00
    @KevinBu virtualenv 跟 Python 版本没关系
    Kilerd
        7
    Kilerd  
       2019-02-19 22:21:26 +08:00   ❤️ 1
    @KevinBu #5 无论在哪里都应该用 pipenv + venv(virtualenv) 或者 pyenv + virtualenv 来隔离 Python 版本和依赖库

    BTW,都 8102 年了,还不上 docker,还在等什么
    kblacksheep
        8
    kblacksheep  
    OP
       2019-02-19 23:45:10 +08:00
    @Kilerd
    其实已经用了 pipenv 和 pyenv 来管理了 但是直接 sudo python 还是执行的 2.6 版本的。。docker 确实得学学了 哈哈哈
    Osk
        9
    Osk  
       2019-02-20 00:13:17 +08:00
    不写 #!/usr/bin/env python3 吗? 还是虚拟环境创建的是 python2 ?
    kblacksheep
        10
    kblacksheep  
    OP
       2019-02-20 00:52:31 +08:00
    @Osk
    虚拟环境是 python3 但是激活虚拟环境之后再用 sudo python 还是 2 版本的。。我用 which python 得到 python3 的路径之后再 sudo 完整路径调用就行了 #!/usr/bin/env python3 我没写 明天试试看 谢谢大佬
    lujiajing1126
        11
    lujiajing1126  
       2019-02-20 01:14:18 +08:00
    jenkins 可以安装 pyenv 的插件,直接放在 pipeline 里面跑
    kblacksheep
        12
    kblacksheep  
    OP
       2019-02-20 08:43:02 +08:00
    @lujiajing1126
    卧槽还有这插件 我去看下 我现在都是在 jenkinsfile 里激活环境。。。
    kblacksheep
        13
    kblacksheep  
    OP
       2019-02-20 08:46:05 +08:00
    @lujiajing1126
    看错了 我以为是 pipenv....
    Osk
        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 最前面
    congeec
        15
    congeec  
       2019-02-20 13:11:10 +08:00 via iPhone
    @Kilerd 我表示 poetry 比 pipenv 好用。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   972 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 20:46 · PVG 04:46 · LAX 13:46 · JFK 16:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.