V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
nfroot
V2EX  ›  Python

面对 Python 的强大和难用性表示深深的迷茫,莫非打开方式不对?

  •  2
     
  •   nfroot · 2019-04-15 11:26:03 +08:00 · 7993 次点击
    这是一个创建于 2050 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目测 python 也算是极好的语言了,目前各方面也妥妥的了,跨平台也不差了(瞎猜的)

    但是一直不敢去拿别人的 python 来用,因为对这个语言是门外汉(会 asp,会点 php,会点 js,会 vb 系),所以深深的体会到难用性太强大了。多次找到所谓“合适的 py 文件”想直接拿来用。都失败了。

    但是最近又在 github 刚好找到合适的代码,忍不住想尝试一下。
    https://github.com/qubitstream/phpmyadmin_sql_backup

    目测是在 linux 下运行的,不死心啊,快速翻看了一下代码,没看到写死了什么路径,心大的觉得如果库都有,windows 应该可以跑吧。

    咦,人家还是很好心的写了基本信息,支持 windows

    It has been tested with Python 3.4+ on Linux and Windows and phpMyAdmin 4.3.6, 4.5.4.1 and 4.7.0-dev



    下载最新 python 安装,成功
    执行 py 文件,并按帮助给予了相应的参数,然而……缺少库,于是
    缺 grab
    pip 安装 grab,成功
    缺 xxx...
    pip 安装 xxx....,成功

    继续继续。
    python 已经停止了运行。
    我忍,我有狗,继续放狗。
    哦哦原来是要给 python 把防火墙给开放了。
    OK。
    继续运行!
    ModuleNotFoundError
    缺了 1xml

    pip 安装 1xml,成功

    还有一步是要 pycurl 的(应该是在 1xml 之前),pip 安装不成功
    不成功????
    于是放狗搜去。
    哦哦哦,原来要去库的官网下载 whl 文件,手动 pip 安装。
    想了半天楞是没想明白这是个啥意思,你都 pip 可以手动安装了,咋就不能自动呢。

    于是下吧,眼睁睁的看着一堆,找了个像样子的下下来。
    pip d:\xxx.whl
    安装失败 0 0。。。。

    啥玩意这是,继续放狗。
    哦哦,原来 cp36 是对应 python3.6x ,我要选 cp37 的。
    安装成功

    继续运行这个 py 文件
    xxx 超时
    莫非是漏了什么文件没给防火墙白名单,看到 python 目录有个 curl.exe 是刚才编译的,白名单走起。
    再运行
    python 停止了运行
    我忍。
    想想 python 应该带了个 IDE 才对,开始菜单打开 IDLE,开启 debug,执行脚本,debug 面板点 go。
    哦哦,运行正常,显示了 py 文件提供的帮助
    继续放狗,如何带参数调试,
    找到了

    sys.argv =[sys.argv[0],'http://xxx.com:3313/mysql/','myusername','mypassword','--http-auth','myusername:mypassword']

    然而。。

    Error: ('Resolving timed out after 3013 milliseconds', error(28, 'Resolving timed out after 3013 milliseconds'))


    看了看 debug 面板,一脸懵逼。看了看进程,对应进程的路径开了防火墙白名单啊。
    真的无解了,按说是超时,那应该可以抓包看看,但是真的不想折腾了。python 我还是敬而远之吧。

    我真的是被 Windows 惯坏了。asp 是这样的,一处编写,到处运行,php、vbs、vb 亦如是。python 不知道是怎么回事,之前也是好几次了(几年前的事情了),找到个不错的 py 写的东西,可能偏门了点吧,没人指导的情况下就没一次成功的。

    权当门外汉的抱怨吧,不必嘲讽,只是真的不太理解为什么别人家的东西都是拿来用即可,到 python 这里反而行不通了。。。
    73 条回复    2019-04-16 11:11:45 +08:00
    yegle
        1
    yegle  
       2019-04-15 11:35:00 +08:00   ❤️ 8
    1xml 居然被你装上了,这怕不是搞笑吧?
    RHxW
        2
    RHxW  
       2019-04-15 11:35:30 +08:00   ❤️ 1
    这种情况我看都看不懂……
    总感觉还是照着人家把代码自己写(扒)一遍比较好(真的好弱啊……)
    Trim21
        3
    Trim21  
       2019-04-15 11:37:32 +08:00   ❤️ 2
    在 linux 下面基本可以一次用 pip 顺利安完所有的依赖, 在 windows 下面就是会有各种各样奇奇怪怪的问题
    youngce
        4
    youngce  
       2019-04-15 11:37:39 +08:00   ❤️ 1
    python 简单一点的脚本还是可以拿来直接用的- -不过要学一下 python 的安装?再按照作者给出 requirements 把包安装上?确实对于完全的小白还是有点麻烦就是了。不过还是值得花时间学习一下的
    dbw9580
        5
    dbw9580  
       2019-04-15 11:48:41 +08:00 via Android   ❤️ 1
    Do not use the recent version of pycurl (7.43.0 at the moment). This version fails randomly on windows platform. Use 7.19.5.3 version. You can get it here 

    from grab installation instructions
    nfroot
        6
    nfroot  
    OP
       2019-04-15 11:50:49 +08:00
    @yegle 不是搞笑啊,主题的内容一部分是凭记忆写的,可能是有部分地方有出入。但是除了最后的没搞定,似乎一个个都没提示缺库了(主要还是缺这缺那库,去找找总是有的,还有 python 已停止运行也没搞定,想着自己的简易 IDE 应该也可以调试,但是看着调试信息看不明白)

    Error: ('Resolving timed out after 3013 milliseconds', error(28, 'Resolving timed out after 3013 milliseconds'))
    matsuz
        7
    matsuz  
       2019-04-15 12:10:58 +08:00   ❤️ 1
    依赖管理在任何一个语言中,都从来不是一个简单的问题
    40huo
        8
    40huo  
       2019-04-15 12:14:33 +08:00   ❤️ 1
    这么个功能为什么要用 phpmyadmin
    CallMeReznov
        9
    CallMeReznov  
       2019-04-15 12:22:23 +08:00   ❤️ 2
    你应该怪这个仓库提供的相关部署细节不够
    而不是怪 python 这样那样的问题
    部署文档细节不够不光是 python,你任何语言都麻烦.
    LokiSharp
        10
    LokiSharp  
       2019-04-15 12:24:28 +08:00 via iPhone   ❤️ 1
    别在 Windows 用 Python
    guokeke
        11
    guokeke  
       2019-04-15 12:27:02 +08:00   ❤️ 1
    难用性?
    genius2k
        12
    genius2k  
       2019-04-15 12:28:17 +08:00   ❤️ 1
    @40huo 同好奇。。几行 bash 的事。。
    zst
        13
    zst  
       2019-04-15 12:30:03 +08:00 via Android   ❤️ 1
    Windows 下的 Python 有各种奇奇怪怪的问题,如果非要在 win 下用要装 anaconda 然后换源
    nfroot
        14
    nfroot  
    OP
       2019-04-15 12:39:36 +08:00 via Android
    @RHxW 自己不会 python,有的功能自己写麻烦,反正我是有得用绝对不会自己写(不是专业的,写起来慢)
    @Trim21 这个倒是不太理解,按说是一个套路啊

    @youngce 主要不知道有什么坑,Python 我以为直接 pip install 就搞定库了,实际上。。。。真的希望不管是自己写的还是别人写的,用的人直接拿来用最好了


    @dbw9580 谢谢,回头再试试吧,不行就打算换 php 或 vb 自己来了。。。

    @matsuz 我想不管是什么语言,最好是用户拿来直接可以用。唉,奈何困难重重。

    @40huo 利用 phpmyadmin 来自动备份的想法很早就有了,从 Google 看也与很多人的想法不谋而合,git 有 Python 和 shell 写的,也有闭源备份软件集成了(然而不支持 http 基本认证),说明还是很有意义的。

    谢谢大家,我再试试,如果最后实在不行就用 php 或者 vb 写个了。。。。
    reus
        15
    reus  
       2019-04-15 12:44:27 +08:00   ❤️ 1
    要怪就怪 windows !
    nfroot
        16
    nfroot  
    OP
       2019-04-15 12:48:11 +08:00 via Android
    @guokeke 易用性是反面。。。。。。
    @genius2k 虚拟主机 MySQL 不对外开放,所以通过 phpmyadmin 的手动导出功能,转为自动备份。。这个需求谷歌可以看到不少,开源闭源的都有实现。


    @LokiSharp
    @zst
    我下次注意
    goodleixiao
        17
    goodleixiao  
       2019-04-15 13:24:25 +08:00   ❤️ 1
    习惯了在 linux 上用 python,Windows 太难用了,要考虑的东西太多。 大多数的大佬都是用 mac 电脑,无痛。。。
    blless
        18
    blless  
       2019-04-15 13:28:55 +08:00 via Android   ❤️ 1
    php node 什么的碰到需要编译的库也好不到哪去
    thautwarm
        19
    thautwarm  
       2019-04-15 13:50:05 +08:00 via Android   ❤️ 1
    有可能是 windows 上不用 anaconda 导致的难用性
    tomczhen
        20
    tomczhen  
       2019-04-15 13:52:34 +08:00 via Android   ❤️ 3
    Windows 上能装好 lxml 已经比很多人强了。
    ipwx
        21
    ipwx  
       2019-04-15 13:55:23 +08:00   ❤️ 1
    Windows 上可以尝试 Anaconda,解决大部分疑难杂症。
    silkriver
        22
    silkriver  
       2019-04-15 13:59:44 +08:00   ❤️ 1
    不管你用 pip 还是用 conda,要做的第一件事都是设境内镜像源,否则即使能用也是慢,官方文档才不会跟你提功夫网的问题
    fy
        23
    fy  
       2019-04-15 14:01:57 +08:00   ❤️ 1
    @yegle #1 现在 pip 有二进制包了,lxml 好像很久以前就能在 win 上直装了,不需要编译。不过我 anaconda 用了很久,在这方面没什么感觉
    zst
        24
    zst  
       2019-04-15 14:02:45 +08:00 via Android   ❤️ 1
    @silkriver 然鹅 anaconda 换了清华源在 solving environment 那里也能卡好久🌚
    jalena
        25
    jalena  
       2019-04-15 14:07:32 +08:00   ❤️ 1
    兄弟,这个网站了解下!!

    https://www.lfd.uci.edu/~gohlke/pythonlibs/
    k9990009
        26
    k9990009  
       2019-04-15 14:09:05 +08:00 via Android   ❤️ 1
    还是 docker 吧,pip 和 npm 切环境总会遇到奇怪的问题,脑壳疼
    whwq2012
        27
    whwq2012  
       2019-04-15 14:09:25 +08:00 via Android   ❤️ 1
    嗯~楼主也许应该试试 virtualenv。。
    lihongjie0209
        28
    lihongjie0209  
       2019-04-15 14:15:13 +08:00   ❤️ 1
    @matsuz java 的依赖管理是我用过最好的,fatjar 了解一下
    Foreverdxa
        29
    Foreverdxa  
       2019-04-15 14:26:51 +08:00   ❤️ 1
    我也不太喜欢 Python,但是菜是事实
    matsuz
        30
    matsuz  
       2019-04-15 14:29:31 +08:00   ❤️ 1
    @lihongjie0209 Java 的依赖管理确实是做的相对比较好的,可能与 Java 的库很少会调用 Native 的链接库有关
    houzhimeng
        31
    houzhimeng  
       2019-04-15 14:30:09 +08:00   ❤️ 1
    发现 pipenv 环境都能打包,很方便
    keepeye
        32
    keepeye  
       2019-04-15 14:36:04 +08:00   ❤️ 1
    从入门到放弃系列
    lihongjie0209
        33
    lihongjie0209  
       2019-04-15 15:01:33 +08:00   ❤️ 1
    @matsuz 因为 jdk 和第三方库都把常见的功能给实现了,有很多第三方的服务,比如说内存数据库都有纯 java 的实现,而且性能也不差。
    matsuz
        34
    matsuz  
       2019-04-15 15:05:50 +08:00   ❤️ 1
    @lihongjie0209 对的,所以说要让依赖管理好用,唯一的方式就是把库的代码全部用该语言原生实现
    haon
        35
    haon  
       2019-04-15 15:09:03 +08:00   ❤️ 1
    头一次听说难用性这个词,新奇
    rockyou12
        36
    rockyou12  
       2019-04-15 15:16:22 +08:00   ❤️ 1
    @matsuz 原生实现只是一部分。java 的包管理设计得好,这点也很重要( maven、gradle )。其他语言,哪怕是比较新的语言比如 node 和 go 也是被吊打,更不要说 python 和 php 这些了
    justff
        37
    justff  
       2019-04-15 15:19:02 +08:00   ❤️ 1
    是 Windows 上面的兼容性问题 和语言本身关系不大
    troywinter
        38
    troywinter  
       2019-04-15 15:22:12 +08:00   ❤️ 1
    好奇楼主真的是写代码的?如果让你接手个 c++代码,各种依赖怕不是要炸毛?
    aploium
        39
    aploium  
       2019-04-15 15:29:53 +08:00   ❤️ 1
    你要是非得在 windows 下用 python 的话, 用 WSL+Anaconda 吧
    Yourshell
        40
    Yourshell  
       2019-04-15 15:33:54 +08:00   ❤️ 1
    跟 Python 关系不大,估计你要是用的 JS 也会遇到这种问题。
    recall704
        41
    recall704  
       2019-04-15 15:36:52 +08:00   ❤️ 1
    所以说为什么 docker 会这个成功,就是解决了传统的依赖问题。

    你这个换 linux 能解决, 我刚学 python 的时候,就换了 linux,为啥?因为我有时间解决 windows 依赖的问题,我代码都写了 100 多行了。
    zdnyp
        42
    zdnyp  
       2019-04-15 15:41:37 +08:00   ❤️ 1
    win 下最好用 Anaconda3
    bomb77
        43
    bomb77  
       2019-04-15 15:49:49 +08:00   ❤️ 1
    docker + 10086
    jwchen
        44
    jwchen  
       2019-04-15 16:00:39 +08:00   ❤️ 1
    开源库应该提供 pipenv 的 pipfile 文件,或者 requestments 文件
    你可以使用 win10 的 wsl 运行,大部分都没有问题
    pycharm 也可以设置 wsl 为运行调试环境。
    hmzt
        45
    hmzt  
       2019-04-15 16:11:59 +08:00   ❤️ 1
    @troywinter 我们 c++程序员会把依赖的第三方库全都放在项目里,直接 cmake 就 ok 了,虽然大多不能跨平台
    dingyaguang117
        46
    dingyaguang117  
       2019-04-15 16:12:03 +08:00   ❤️ 1
    ruby 也是, 不少库 windows 不友好
    luanguang
        47
    luanguang  
       2019-04-15 16:17:04 +08:00   ❤️ 1
    windows 下用 python 真的是建议 anaconda。常用的依赖基本就已经帮你装好了
    wind3110991
        48
    wind3110991  
       2019-04-15 16:23:31 +08:00   ❤️ 1
    能在 windows 上折腾各种编译配置环境的人,要不是闲,要不就是能死磕。。
    docker 一装啥事没了
    genius2k
        49
    genius2k  
       2019-04-15 16:36:51 +08:00   ❤️ 1
    珍爱生命远离 anaconda。。。

    个人经历,用 anaconda 更新更新着,就不知道什么包就乱了,而且 anaconda 官方的 repo 包更新并不及时。像我经常用的 numpy,官方的包连接的是 intel 的 mkl,conda-forge 用的是 openblas,两个混用经常就会乱了。。

    现在感觉最好的体验是直接用官方的 python 和 pip,lxml 什么的从来没遇到过问题,一个 pip install 全搞定
    zxcvsh
        50
    zxcvsh  
       2019-04-15 16:43:36 +08:00 via iPhone   ❤️ 1
    从基础系统的过一遍吧...看你装依赖库都这么艰难
    genius2k
        51
    genius2k  
       2019-04-15 16:46:20 +08:00   ❤️ 1
    @nfroot 或许你可以试试 https://github.com/speechkey/curl-phpmyadmin 一个基于 curl 的实现相同功能的

    另外你要是能直接传 php 文件不知道能不能直接运行 php.exec? 这个或许可以参考下 https://stackoverflow.com/questions/6750531/using-a-php-file-to-generate-a-mysql-dump
    2exhjx
        52
    2exhjx  
       2019-04-15 16:51:43 +08:00   ❤️ 1
    docker
    win7pro
        53
    win7pro  
       2019-04-15 16:53:27 +08:00   ❤️ 1
    python 让我最难受的就是他的 tab 缩进
    neoblackcap
        54
    neoblackcap  
       2019-04-15 17:06:12 +08:00   ❤️ 1
    @win7pro 你可以尝试 4 个空格,一样的
    bigbigsman
        55
    bigbigsman  
       2019-04-15 17:22:24 +08:00   ❤️ 1
    python 难安装(容易报错)的模块基本都是 c 写的,纯 python 实现的模块 pip 就能搞定
    win7pro
        56
    win7pro  
       2019-04-15 17:40:53 +08:00   ❤️ 1
    @neoblackcap 并不是说空格和 tab 的问题,我是说要依赖 tab 或空格缩进来限制规则,少个空格就报错。我印象中连注释都会要求空格位置,否则也会报错。
    pipinstallpy
        57
    pipinstallpy  
       2019-04-15 17:50:20 +08:00   ❤️ 1
    每次遇到包的问题都会热情的问候 python 一遍
    CBBing
        58
    CBBing  
       2019-04-15 18:08:10 +08:00 via Android   ❤️ 1
    @nfroot lxml 依赖很多库的,反正我好几年前装的时候费了好大劲的
    omph
        59
    omph  
       2019-04-15 18:20:03 +08:00   ❤️ 1
    python 不适合跨平台,看了下,就 100 来行的代码,建议用 powershell 重写
    ThomasZ
        60
    ThomasZ  
       2019-04-15 18:34:04 +08:00 via Android   ❤️ 3
    想想 py 的作者的头发,在看看其他语言的作者头发,我觉得可以忍
    JunyuMu
        61
    JunyuMu  
       2019-04-15 18:58:39 +08:00 via iPhone   ❤️ 1
    @ThomasZ 突然想给你一万个赞
    Trim21
        62
    Trim21  
       2019-04-15 19:13:17 +08:00 via Android   ❤️ 1
    @nfroot pip 上传包有两种格式,二进制和源码包,然后 Python 有些包包含了 c 扩展。如果发布者提供了二进制版本还好,安装的时候只是拷贝文件。但如果某个包用到了 c 又只发布了源码包,pip 就会在安装的时候尝试编译。大部分的安装出错都是这种情况。

    Ubuntu 安一个 build essential 就可以解决大部分编译问题,缺的基本只是各种库源码,但到了 Windows 下,emmmm
    troywinter
        63
    troywinter  
       2019-04-16 00:00:39 +08:00   ❤️ 1
    @hmzt 请去掉"我们", 我优化过某独角兽 80G 的 c++代码库,只是说一下,做个假设
    yegle
        64
    yegle  
       2019-04-16 02:08:23 +08:00   ❤️ 1
    @fy 1xml vs lxml
    elvis_w
        65
    elvis_w  
       2019-04-16 07:21:26 +08:00 via Android   ❤️ 1
    Windows 一样可以装带 C 代码的扩展,楼上大部分对 Windows 偏见太深
    https://wiki.python.org/moin/WindowsCompilers
    silkriver
        66
    silkriver  
       2019-04-16 09:40:48 +08:00   ❤️ 1
    Windows 需要额外安装编译器,然后微软的下载页面对新手很不友好,通常都会搞成安装整个 Visual Studio 在线下载成 GB 的文件(其实只要下几十 MB 的一个 VC++BuildTool 就够了)。
    shyrock
        67
    shyrock  
       2019-04-16 09:51:35 +08:00   ❤️ 1
    用 python2 年了,虽然很沉迷 py 但是不得不承认 lz 说的有道理,py 对初学者来说各种环境问题太不友好了。
    nfroot
        68
    nfroot  
    OP
       2019-04-16 10:31:33 +08:00
    @yegle CMD 的 1 和 l 用 QQ 截图放大了也分不清谁是谁= =。。。。。就好像 windows chrome 打开 V2EX,“字”和“宇”也分不清


    谢谢大家回复,我就不一一回复了,用 PHP 重写走起。
    ThomasZ
        69
    ThomasZ  
       2019-04-16 10:42:02 +08:00 via Android
    @JunyuMu 别别别,我已经没头发了
    ThomasZ
        70
    ThomasZ  
       2019-04-16 10:43:13 +08:00 via Android
    @JunyuMu 我主要用的是 cpp ಥ_ಥ
    hmzt
        71
    hmzt  
       2019-04-16 10:59:31 +08:00
    @troywinter 好吧,公司私有代码可能比较随意,因为这种很少会被别的项目依赖,网上开源的第三方库基本都会自带依赖吧
    win7pro
        72
    win7pro  
       2019-04-16 11:08:39 +08:00
    @ThomasZ #60 我尽无言以对
    love
        73
    love  
       2019-04-16 11:11:45 +08:00
    珍爱生命远离 windows
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   989 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 19:12 · PVG 03:12 · LAX 11:12 · JFK 14:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.