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 · 196 天前 · 1365 次点击
    这是一个创建于 196 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近用 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   196 天前 via iPhone   ❤️ 1
    你需要的功能太多了的话,还是 ptcharm 更合适,vscode 对 python 仅限于轻度编辑
    geelaw
        2
    geelaw   196 天前 via iPhone   ❤️ 1
    你可以用 .vscofe/settings.json 改变打开模拟终端时使用的 shell 命令(加入设置环境变量的实参),但我不知道这对播放按钮是否有效。
    SenLief
        3
    SenLief   196 天前   ❤️ 1
    vscode 不是 ide,他只是编辑器。
    aladdindingding
        4
    aladdindingding   196 天前   ❤️ 1
    这么说吧 Pycharm 解君愁,我也是 vscode 被迫转的,vscode 拿来看看源码,读下代码还是不错的,干活还得 Pycharm
    leverestfish
        5
    leverestfish   196 天前
    @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   196 天前   ❤️ 1
    呃 其他的你解决了, 那我就提一下 main 的代码片段不能补全的问题, 这个就不是善用搜索能解决的了, 因为不是 bug, 可以参考我之前发过的帖子, 当时找了 2 天, 结果从更新日志里找到的, 坑, 乱调默认设置太郁闷了.

    VSCode 6 天前更新了 Python 扩展, 默认不带代码片段, 不是自动补全坏了, 望周知 - V2EX - https://www.v2ex.com/t/749066#reply7
    leverestfish
        7
    leverestfish   196 天前
    @ClericPy 非常感谢!!!!!!
    leverestfish
        8
    leverestfish   196 天前
    @ClericPy 顺便问下,如何讲 Snippets 置顶,或者是调整补全选项的出现顺序?以及能否 disable 补全插件自带的一些选项,比如 if for 之类的(没有扩展的坑位完全没用啊)
    ClericPy
        9
    ClericPy   196 天前
    @leverestfish
    顺序的问题还真没注意过... 我把不用的那几个都删了, 扩展的话, 我也没啥其他补全扩展, 一开始用 jedi, 后来 lsp 真香真快, 后来 lsp 太吃内存了换到 pylance 上(现在就是每次查看定义默认是 pyi 很烦)
    generated
        10
    generated   190 天前   ❤️ 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   190 天前
    @generated 解析和自动补全我通过 python.envFile 解决了,但是你这 setting 好像没有解决运行时 pythonpath
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2162 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 18ms · UTC 11:44 · PVG 19:44 · LAX 04:44 · JFK 07:44
    ♥ Do have faith in what you're doing.