From 0721f11731b64b1b134f3cb7c227a6477044e8fa Mon Sep 17 00:00:00 2001 From: shaoran Date: Fri, 8 May 2020 17:42:19 +0200 Subject: [PATCH] Adding documentation to the README for import errors in vim (#1317) * Adding documentation to the README for import errors in vim I had the same issue as psf/black#1148 and have been searching for a solution to this. I realized that you cannot fix it by change anything in the code, but by re-compiling the C extensions of regex and typed-ast. Installing this packages from the tarballs solves the problem. * Fixing a bad copy&paste Co-Authored-By: Hugo van Kemenade * chore: changed made by pre-commit * chore: better way of dealing with non-binary installs * chore: adding vim cache files to the ignore list Co-authored-by: Hugo van Kemenade --- .gitignore | 1 + README.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/.gitignore b/.gitignore index 1c8d77c..b76c149 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ _black_version.py .idea .eggs .dmypy.json +*.swp diff --git a/README.md b/README.md index 6970a2a..8ff893c 100644 --- a/README.md +++ b/README.md @@ -823,6 +823,55 @@ default. On macOS with Homebrew run: `brew install vim`. When building Vim from use: `./configure --enable-python3interp=yes`. There's many guides online how to do this. +**I get an import error when using _Black_ from a virtual environment**: If you get an +error message like this: + +```text +Traceback (most recent call last): + File "", line 63, in + File "/home/gui/.vim/black/lib/python3.7/site-packages/black.py", line 45, in + from typed_ast import ast3, ast27 + File "/home/gui/.vim/black/lib/python3.7/site-packages/typed_ast/ast3.py", line 40, in + from typed_ast import _ast3 +ImportError: /home/gui/.vim/black/lib/python3.7/site-packages/typed_ast/_ast3.cpython-37m-x86_64-linux-gnu.so: undefined symbool: PyExc_KeyboardInterrupt +``` + +Then you need to install `typed_ast` and `regex` directly from the source code. The +error happens because `pip` will download [Python wheels](https://pythonwheels.com/) if +they are available. Python wheels are a new standard of distributing Python packages and +packages that have Cython and extensions written in C are already compiled, so the +installation is much more faster. The problem here is that somehow the Python +environment inside Vim does not match with those already compiled C extensions and these +kind of errors are the result. Luckily there is an easy fix: installing the packages +from the source code. + +The two packages that cause the problem are: + +- [regex](https://pypi.org/project/regex/) +- [typed-ast](https://pypi.org/project/typed-ast/) + +Now remove those two packages: + +```console +$ pip uninstall regex typed-ast -y +``` + +And now you can install them with: + +```console +$ pip install --no-binary :all: regex typed-ast +``` + +The C extensions will be compiled and now Vim's Python environment will match. Note that +you need to have the GCC compiler and the Python development files installed (on +Ubuntu/Debian do `sudo apt-get install build-essential python3-dev`). + +If you later want to update _Black_, you should do it like this: + +```console +$ pip install -U black --no-binary regex,typed-ast +``` + ### Visual Studio Code Use the -- 2.39.5