[求助] VS Code 如何自动加载 PYTHONPATH 等环境变量 [已善用搜索] - V2EX
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
leverestfish
V2EX    Python

[求助] VS Code 如何自动加载 PYTHONPATH 等环境变量 [已善用搜索]

  •  
  •   leverestfish 2021-04-10 01:39:02 +08:00 2861 次点击
    这是一个创建于 1655 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近用 vscode 写 python 感觉包路径搜索有点膈应,故来此询问。

    [需求] 自动加载 src 等 content root 目录到搜索目录,不想每次打开 vscode 在命令行手动输export pythOnpath= ...

    [成果] 目前探索成果:

    • 实现 vscode 解析代码(自动补全等)的搜索路径
      • 通过 setting.json 的"python.envFile"字段以及.env文件
    • 实现 debug 模式 run
      • 通过 lauch.json 的"python.envFile"字段以及.env文件

    [问题] 所以 vscode 右上角那个三角形 run 按钮( run python with termianl )触发的代码运行如何才能加载.env

    这个三角形 run 应该是 python extension 包带的,不知道哪里能设置环境变量

    另外问一下,为什么 vscode 的 python 套件,连 if name == main 这种常用 snippet 都不能补全出来

    [环境] macOS 插件的话 python 相关就是 vscode 推荐的那套 extension pack

    11 条回复    2021-04-16 00:25:50 +08:00
    ch2
        1
    ch2  
       2021-04-10 02:01:37 +08:00 via iPhone   1
    你需要的功能太多了的话,还是 ptcharm 更合适,vscode 对 python 仅限于轻度编辑
    geelaw
        2
    geelaw  
       2021-04-10 03:07:38 +08:00 via iPhone   1
    你可以用 .vscofe/settings.json 改变打开模拟终端时使用的 shell 命令(加入设置环境变量的实参),但我不知道这对播放按钮是否有效。
    aladdindingding
        4
    aladdindingding  
       2021-04-10 08:48:40 +08:00   1
    这么说吧 Pycharm 解君愁,我也是 vscode 被迫转的,vscode 拿来看看源码,读下代码还是不错的,干活还得 Pycharm
    leverestfish
        5
    leverestfish  
    OP
       2021-04-10 12:17:55 +08:00
    @ch2 我主力就是使用 pycharm 的,而且正是这个原因使得我对 pycharm 的自动加载 pythonpath 有依赖。但是有的场景(比如需要远程连开发机( pycharm 也可以 remote ssh 但是本质不太一样)),这时候因为我没写 sys.path.append 之类的,所以就很不方便了。

    @geelaw 成功了,setting 配置如下。

    ``` JSON
    {
    "terminal.integrated.env.osx": {
    "PYTHONPATH": "$PYTHONPATH:<MYPATH>"
    }
    }
    ```

    但是有个小 bug,当我没有打开任何终端的时候,点播放按钮会提示`Command python.execInTerminal-icon not found`
    ClericPy
        6
    ClericPy  
       2021-04-10 12:46:36 +08:00   1
    呃 其他的你解决了, 那我就提一下 main 的代码片段不能补全的问题, 这个就不是善用搜索能解决的了, 因为不是 bug, 可以参考我之前发过的帖子, 当时找了 2 天, 结果从更新日志里找到的, 坑, 乱调默认设置太郁闷了.

    VSCode 6 天前更新了 Python 扩展, 默认不带代码片段, 不是自动补全坏了, 望周知 - V2EX - t/749066#reply7
    leverestfish
        7
    leverestfish  
    OP
       2021-04-10 13:04:49 +08:00
    @ClericPy 非常感谢!!!!!!
    leverestfish
        8
    leverestfish  
    OP
       2021-04-10 13:10:47 +08:00
    @ClericPy 顺便问下,如何讲 Snippets 置顶,或者是调整补全选项的出现顺序?以及能否 disable 补全插件自带的一些选项,比如 if for 之类的(没有扩展的坑位完全没用啊)
    ClericPy
        9
    ClericPy  
       2021-04-10 13:34:24 +08:00
    @leverestfish
    顺序的问题还真没注意过... 我把不用的那几个都删了, 扩展的话, 我也没啥其他补全扩展, 一开始用 jedi, 后来 lsp 真香真快, 后来 lsp 太吃内存了换到 pylance 上(现在就是每次查看定义默认是 pyi 很烦)
    generated
        10
    generated  
       2021-04-16 00:06:00 +08:00   1
    参考配置
    {
    "python.pythonPath": "venv/Scripts/python.exe",
    "python.analysis.extraPaths": [
    "/your_extra_pythonpath"
    ],
    "python.autoComplete.extraPaths": [
    "/your_extra_pythonpath"
    ],
    "files.watcherExclude": {
    "**/.git/objects/**": true,
    "**/.git/subtree-cache/**": true,
    "**/node_modules/*/**": true,
    "**/.hg/store/**": true,
    "**/venv/**": true
    },
    "search.exclude": {
    "**/node_modules": true,
    "**/bower_components": true,
    "**/venv/**": true,
    "**/.git/**": true,
    }
    }

    将你需要补全的目录加到 "python.autoComplete.extraPaths" 和 "python.analysis.extraPaths" 中就可以了
    leverestfish
        11
    leverestfish  
    OP
       2021-04-16 00:25:50 +08:00
    @generated 解析和自动补全我通过 python.envFile 解决了,但是你这 setting 好像没有解决运行时 pythonpath
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3398 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 05:00 PVG 13:00 LAX 22:00 JFK 01:00
    Do have faith in what you're doing.
    ubao msn 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