【问题标题】:Emacs flycheck and python virtualenvEmacs flycheck 和 python virtualenv
【发布时间】:2020-05-01 07:08:08
【问题描述】:

我对 Python virtualenvs 和 Emacs 还很陌生。我想尝试保留用于检查和格式化代码(flake8 和 black)的 python 包,而不是我实际代码库使用的包(例如 numpy 等)。

我的想法是创建两个独立的 virtualenvs(使用 pyenv),一个用于 Emacs 扩展所需的包,另一个用于我的其余代码。

我正在使用 Emacs 包 elpy;安装 blacken 后,black 的自动格式化立即生效。即使我在我的 project-venv 中,并且我的 emacs-venv 中安装了 black。

Flycheck 就没那么幸运了;它很难找到 flake8 可执行文件。将以下内容放入我的 Emacs 初始化文件中没有任何作用;它似乎默认为我当前 virtualenv 中的 python 可执行文件。

(setq flycheck-python-flake8-executable <PATH>) 

但是,我可以通过 Emacs 交互模式获得正确的可执行文件。

M-x flycheck-set-checker-executable RET python-flake8 RET <PATH>

我检查检查器状态,它说“可以启用”,但是当我使用交互式启用命令时,它会响应“检查器可能未在此缓冲区中使用”。

【问题讨论】:

    标签: python emacs


    【解决方案1】:

    从我的实际代码库使用的包中保留我用于检查和格式化代码(flake8 和黑色)的 python 包

    默认情况下是这种方式。 blackflake8入口脚本shebangs指定python绝对路径:

    $ head -n1 $(which black)
    #!/usr/bin/python3.8
    $ head -n1 $(which flake8)
    #!/usr/bin/python3.8
    

    【讨论】:

      【解决方案2】:

      我在深夜输入了这个问题,并没有很好地解释我想要什么。我的目标是让pip freeze 不输出与我的项目代码库无关的python 包。

      在考虑了更多之后,我找到了一种更直接的方法来获得我想要的东西(而不是拥有多个 virtualenvs)。

      1. 在项目的 virtualenv 中安装 flake8(或其他任何东西)。

      2. 使用pigar 生成基于导入的需求列表。

      这是一个简短的 Makefile; make freeze.

      # Use pigar to generate 'pip freeze' requirements based on imports, no comments.
      freeze:
          pigar -p .tmpreqs --without-referenced-comments
          tail -n +3 .tmpreqs > requirements.txt
          rm .tmpreqs
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-05
        • 1970-01-01
        • 2022-10-05
        • 1970-01-01
        • 2023-04-09
        • 1970-01-01
        相关资源
        最近更新 更多