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

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

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

    用 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   ·   实用小工具   ·   1532 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 17:04 · PVG 01:04 · LAX 09:04 · JFK 12:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.