吐槽, 用 pycharm 跑 flask 遇到各种空格路径问题... - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
chackchackGO
V2EX    Flask

吐槽, 用 pycharm 跑 flask 遇到各种空格路径问题...

  •  
  •   chackchackGO 2023-12-09 18:11:23 +08:00 4043 次点击
    这是个创建于 670 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用 pycharm 跑 flask 遇到各种空格路径问题.
    只能用 vscode 来跑. 但是还要同时用 pycharm 来看函数 usages 之类的高级 feature....

    18 条回复    2023-12-11 09:25:50 +08:00
    b2504420230
        1
    b2504420230  
       2023-12-09 18:58:44 +08:00
    表示一直用 pycharm 跑 flask ;没遇到这种问题啊。问题说清楚点呗;带错误栈
    chackchackGO
        2
    chackchackGO  
    OP
       2023-12-09 19:06:50 +08:00
    jetbrains 相关讨论: https://intellij-support.jetbrains.com/hc/en-us/community/posts/11602067518226-C-Program-Files-Python311-python-exe-can-t-open-file-C-Program-Errno-2-No-such-file-or-directory

    我刚想给你复现, 努力还原了所有情况, 但是问题消失了... : C
    赛博闹鬼了, 之后复现就跟您看..
    chackchackGO
        3
    chackchackGO  
    OP
       2023-12-09 19:26:59 +08:00
    @b2504420230
    原问题虽然没了(原问题是根本无法运行).
    但是新问题是无法访问数据库.
    同样的配置下 vscode 却可以.
    (确定了运行路径无误.)
    ```
    Traceback (most recent call last):
    File "C:\Users\test\miniconda3\lib\site-packages\flask\app.py", line 2213, in __call__
    return self.wsgi_app(environ, start_response)
    File "C:\Users\test\miniconda3\lib\site-packages\flask\app.py", line 2193, in wsgi_app
    respOnse= self.handle_exception(e)
    File "C:\Users\test\miniconda3\lib\site-packages\flask\app.py", line 2190, in wsgi_app
    respOnse= self.full_dispatch_request()
    File "C:\Users\test\miniconda3\lib\site-packages\flask\app.py", line 1486, in full_dispatch_request
    rv = self.handle_user_exception(e)
    File "C:\Users\test\miniconda3\lib\site-packages\flask\app.py", line 1484, in full_dispatch_request
    rv = self.dispatch_request()
    File "C:\Users\test\miniconda3\lib\site-packages\flask\app.py", line 1469, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
    File "C:\Users\test\Desktop\workSpace\Y36_1204\iMusic\iMusic.py", line 23, in statistics
    genres = get_genres()
    File "C:\Users\test\Desktop\workSpace\Y36_1204\iMusic\iMusic.py", line 231, in get_genres
    cOnn= sqlite3.connect("iMusic.db")
    sqlite3.OperationalError: unable to open database file
    ```
    b2504420230
        4
    b2504420230  
       2023-12-09 19:39:01 +08:00   1
    几个问题
    1. pycharm 给管理员权限了吗;
    2. 不用虚拟环境吗?
    ZZ74
        5
    ZZ74  
       2023-12-09 19:44:51 +08:00
    我觉得正确的吐槽对象应该是 python 本身,用缩进对齐取代;之类的符号
    ISOtropy
        6
    ISOtropy  
       2023-12-09 19:50:37 +08:00 via Android
    @ZZ74 这是 Python 的简洁优势吧 个人感觉 Python 敲起来真爽 看作者原贴 应该是找不到 c 盘那个文件的目录 是 pycharm 的原因
    TArysiyehua
        7
    TArysiyehua  
       2023-12-09 20:43:52 +08:00
    感觉就是楼主没配置好。。。
    0xsui
        8
    0xsui  
       2023-12-09 20:48:25 +08:00
    搞清楚 db 文件的路径,善用调试 debug ,实在不会处理就写绝对路径。。。
    renmu
        9
    renmu  
       2023-12-09 21:23:54 +08:00 via Android   1
    怕不是数据库用得相对路径,然后启动参数不是在数据库的文件夹。
    ps:用哪个编辑器跑代码还会影响结果的吗
    nagisaushio
        10
    nagisaushio  
       2023-12-09 21:46:34 +08:00 via Android
    @ZZ74 楼主又没提缩进的问题,这是在吐槽什么
    TArysiyehua
        11
    TArysiyehua  
       2023-12-09 22:35:39 +08:00   1
    @renmu run 的时候 config 配置相关的,估计楼主也不太懂 python 项目管理的相关配置。理论上跟 IDE 是没有关系的
    chackchackGO
        12
    chackchackGO  
    OP
       2023-12-09 22:57:08 +08:00
    @b2504420230
    1. 没给管理员权限, 没设想过有情景会需要 root.
    2. 以前用 conda env 或者 venv 之类的虚拟环境, 发现似乎在`pip install`时不会智能的从其他环境已有的包拉取数据, 而是都一股脑从网络拉取, 效率很的样子.
    就一直用一个大环境, 后续再考虑 requirements.txt 怎么搞.

    根据楼下的提示发现确实是 pycharm 的 config 执行目录问题. 默认居然是 `pycharm/bin`目录...
    chackchackGO
        13
    chackchackGO  
    OP
       2023-12-09 22:58:35 +08:00
    @TArysiyehua
    @renmu
    @0xsui
    非常感谢, 确实是执行路径问题
    用` print(Path.cwd())`命令 debug 发现 pycharm 的 run, 默认运行路径居然是`pycharm/bin`而不是 project 目录.
    chackchackGO
        14
    chackchackGO  
    OP
       2023-12-09 22:59:44 +08:00
    @renmu 有时候需要用 pycharm 的高级 feature 而 vscode 没有的.
    例如看某个函数的 usages.
    kuanat
        15
    kuanat  
       2023-12-10 03:33:28 +08:00
    楼主这个是非常简单的 cwd 的问题。

    也许是现在大家写代码都过于依赖自动化工具,基础的东西反倒不知道了。不是说楼主,这种情况非常常见。我举几个例子:

    - 即便大厂的项目,搞不清外部依赖的比比皆是,特别是 python 类的机器学习项目,鲜有能做好工程化的

    - 各种所谓的跨平台工具,处理不好路径的正反斜杠,即使用心处理了,很大概率也是硬编码而不是用系统级的 path 方法

    - 外表绚丽的 i18n 结果内部实现竟然不是 rune

    反正大家都是草台班子……
    cz5424
        16
    cz5424  
       2023-12-10 22:15:14 +08:00
    工作目录 pycharm 是可以设置的。默认我记得不是 pycharm/bin ,楼主自己设置错了吧
    bill110100
        17
    bill110100  
       2023-12-11 01:01:46 +08:00
    @tlsmars009 敲起来爽,改起来火葬场,尤其多层 if ,for 循环嵌套,没改好全报错。
    llsquaer
        18
    llsquaer  
       2023-12-11 09:25:50 +08:00
    你这个情况多半是 pycharm 的工作目录设置错误了,或者你中途改过工作目录。设置里改回去就行了。
    简单的方法是删除 .idea 文件夹,在重新打开 pycharm
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2828 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 115ms UTC 13:33 PVG 21:33 LAX 06:33 JFK 09:33
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86