Обновление с python 3.7 до 3.8 вызывает проблемы с pylint и другими модулями в VS Code - PullRequest
0 голосов
/ 13 июля 2020

Я использую python3 через linuxbrew, и сегодня, похоже, было решающее python -обновление, заменяющее python 3.7 на 3.8 в целом.

Что касается моей ОС (Lubuntu 18.04 LTS ):

Operating System: Ubuntu 18.04.4 LTS
Kernel: Linux 5.3.0-62-generic
Architecture: x86-64

Вот почему pip-upgrade всех моих python сайтов-пакетов тогда не работал:

pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U

Выданная ошибка была:

# /home/andylu/Desktop/Shell/python_package_complete_update_via_homebrew_n_pip: /home/linuxbrew/.linuxbrew/bin/pip: /home/linuxbrew/.linuxbrew/opt/python/bin/python3.7: bad interpreter: No such file or directory
# WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
# Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
# To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
# Defaulting to user installation because normal site-packages is not writeable
# ERROR: You must give at least one requirement to install (see "pip help install")

Позже я узнал, что есть установка новой версии python. Как ни странно, было создано две папки:

  1. /home/linuxbrew/.linuxbrew/lib/python3.8
  2. /home/linuxbrew/.linuxbrew/Cellar/python@3.8/3.8.3_2/lib/python3.8

В качестве пакетов сайтов в новом python3 Папка .8 оказалась совершенно пустой, я переместил все пакеты сайтов (> 1 ГБ) из остатка / остатка python3 .7 в новую папку python3 .8. При этом я предположил, что они также будут работать под python 3.8, вместо того, чтобы удалять и переустанавливать их все.

Более того, я решил, что пакеты сайтов в /home/linuxbrew/.linuxbrew/Cellar/python@3.8/3.8.3_2/lib/python3.8 кажутся простой ссылкой в папку под /home/linuxbrew/.linuxbrew/lib/python3.8.

Затем я обновил команду pip package-update до следующего:

python3 -m pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 python3 -m pip install -U

Кажется, это работает. Тем не менее, при открытии VS Code в правом нижнем углу всегда указывается, что «Путь к линтеру pylint недействителен», даже если путь существует:

USER:~/Desktop/Python/Scripts$ which pylint
/home/linuxbrew/.linuxbrew/bin/pylint

USER:~/Desktop/Python/Scripts$ which python
/usr/bin/python

USER:~/Desktop/Python/Scripts$ which python3
/home/linuxbrew/.linuxbrew/bin/python3

Далее, при выполнении python -скрипта в Код VS через Ctrl + Alt + P возникает следующая ошибка (вместе со всем выводом):

USER:~/Desktop/Python/Scripts$

/home/linuxbrew/.linuxbrew/bin/python3 -c "from IPython import start_ipython; start_ipython()" /home/cripts/Master/Import_export/AERMET/import_and_manip_sitespec_meteodata_AERMET.py
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
/home/linuxbrew/.linuxbrew/lib/python3.8/site-packages/numpy/core/__init__.py in <module>
     21 try:
---> 22     from . import multiarray
     23 except ImportError as exc:

/home/linuxbrew/.linuxbrew/lib/python3.8/site-packages/numpy/core/multiarray.py in <module>
     11 
---> 12 from . import overrides
     13 from . import _multiarray_umath

/home/linuxbrew/.linuxbrew/lib/python3.8/site-packages/numpy/core/overrides.py in <module>
      6 
----> 7 from numpy.core._multiarray_umath import (
      8     add_docstring, implement_array_function, _get_implementing_args)

ModuleNotFoundError: No module named 'numpy.core._multiarray_umath'

During handling of the above exception, another exception occurred:

ImportError                               Traceback (most recent call last)
~/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts/Master/Import_export/AERMET/import_and_manip_sitespec_meteodata_AERMET.py in <module>
     40 
     41 import re
---> 42 import numpy as np
     43 import pandas as pd
     44 from tqdm import tqdm

/home/linuxbrew/.linuxbrew/lib/python3.8/site-packages/numpy/__init__.py in <module>
    138     from . import _distributor_init
    139 
--> 140     from . import core
    141     from .core import *
    142     from . import compat

/home/linuxbrew/.linuxbrew/lib/python3.8/site-packages/numpy/core/__init__.py in <module>
     46 """ % (sys.version_info[0], sys.version_info[1], sys.executable,
     47         __version__, exc)
---> 48     raise ImportError(msg)
     49 finally:
     50     for envkey in env_added:

ImportError: 

IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!

Importing the numpy C-extensions failed. This error can happen for
many reasons, often due to issues with your setup or how NumPy was
installed.

We have compiled some common reasons and troubleshooting tips at:

    https://numpy.org/devdocs/user/troubleshooting-importerror.html

Please note and check the following:

  * The Python version is: Python3.8 from "/home/linuxbrew/.linuxbrew/opt/python@3.8/bin/python3.8"
  * The NumPy version is: "1.19.0"

and make sure that they are the versions you expect.
Please carefully study the documentation linked above for further help.

Original error was: No module named 'numpy.core._multiarray_umath'

Тем не менее, numpy уже обновлен:

USER:~/Desktop/Python/Scripts$ pip install numpy
Requirement already satisfied: numpy in /home/linuxbrew/.linuxbrew/lib/python3.8/site-packages (1.19.0)

Кроме того, в файле settings.json из VS Code я объявил, чтобы не рисковать, следующее:

"python.autoComplete.extraPaths": [
        "/home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts",
        "/home/linuxbrew/.linuxbrew/lib/python3.8/site-packages",
        "/home/linuxbrew/.linuxbrew/Cellar/python@3.8/3.8.3_2/lib/python3.8/site-packages"
    ]

В моем .bashr c - файле я уже обновил все безрезультатно:

# Link to own and official python scripts and packages
export PYTHONPATH=/home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts:/home/linuxbrew/.linuxbrew/lib/python3.8/site-packages:/home/linuxbrew/.linuxbrew/Cellar/python@3.8/3.8.3_2/lib/python3.8/site-packages

# Homebrew
export PATH="/home/linuxbrew/.linuxbrew/bin:$PATH"

Все эти проблемы застали меня врасплох, и я чувствую себя совершенно потерянным. Я хотел продолжить свой проект сегодня, но потратил уже 2 часа на inte rnet, обнаружив, что ни одно из предложенных решений не помогло мне, поэтому я начал эту проблему здесь.

1 Ответ

0 голосов
/ 14 июля 2020

Решение вышеупомянутых проблем заключалось в обходном пути, в котором каждый модуль / пакет, вызывающий проблемы, необходимо было сначала удалить, а затем переустановить с нуля.

Это явно отличается от простой попытки обновить уже неправильно установленный пакет.

Я предполагаю, что это было вызвано перемещением python пакетов сайтов, установленных в /../python3.7/site-packages, в новый каталог /../python3.8/site-packages вручную. По-видимому, не все пакеты после этого будут хорошо работать, и их необходимо удалить и переустановить, а не просто обновлять. менее 10.

Вместо использования pip install ... можно также использовать python3 -m pip install ..., если это работает лучше или двоичный файл pip каким-то образом поврежден, как это было изначально в моем случае (см. вопрос выше).

После решения проблем с помощью описанного обходного пути, естественно, возник дополнительный вопрос о том, как вы можете более элегантно мигрировать пакеты сайта на новую версию python 3.x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...