Почему я получаю синтаксическую ошибку при попытке выполнить установку pip на CentOS 6?

#python-2.7 #pip #centos

#python-2.7 #pip #centos

Вопрос:

Я пытаюсь установить модуль python под названием cymysql в системе CentOS 6 с помощью таких команд, как

yum install -y python-setuptools amp;amp; easy_install pip amp;amp; pip install cymysql

Однако я получил сообщение об ошибке, в котором говорится, что в нескольких строках есть ошибка синтаксиса: недопустимый синтаксис (см. Код ошибки следующим Образом) — Это действительно произошло, когда я запустил третью команду pip install cymysql

 Traceback (most recent call last):
  File "/usr/local/bin/pip", line 11, in <module>
    load_entry_point('pip==21.0', 'console_scripts', 'pip')()
  File "build/bdist.linux-x86_64/egg/pkg_resources/__init__.py", line 561, in load_entry_point
  File "build/bdist.linux-x86_64/egg/pkg_resources/__init__.py", line 2631, in load_entry_point
  File "build/bdist.linux-x86_64/egg/pkg_resources/__init__.py", line 2291, in load
  File "build/bdist.linux-x86_64/egg/pkg_resources/__init__.py", line 2297, in resolve
  File "/usr/local/lib/python2.7/site-packages/pip-21.0-py2.7.egg/pip/_internal/cli/main.py", line 60
    sys.stderr.write(f"ERROR: {exc}")
                               ^
SyntaxError: invalid syntax
 

Не уверен, что здесь происходит, просто интересно, может ли кто-нибудь помочь? (Я вложил файл pip и main.py здесь, но я не знаю, где находится init.py файл).Кстати, это CentOS 6, но я установил Python 3.6.10 на сервере.Когда я запускаю команду python3.6 -V, я получаю

python3.6.10

FIY

Код файла PIP:

  #!/usr/bin/python
 # EASY-INSTALL-ENTRY-SCRIPT: 'pip==21.0','console_scripts','pip'
 __requires__ = 'pip==21.0'
 import re
 import sys
 from pkg_resources import load_entry_point

 if __name__ == '__main__':
   sys.argv[0] = re.sub(r'(-script.pyw?|.exe)?

Строки с 57 по 62 в Main.py

 try:
    cmd_name, cmd_args = parse_command(args)
except PipError as exc:
    sys.stderr.write(f"ERROR: {exc}")  //**THIS IS LINE 60**
    sys.stderr.write(os.linesep)
    sys.exit(1)
 

Комментарии:

1. pip 21.0 py2.7 , видите? Проверьте с помощью pip --version

Ответ №1:

amp; tldr;

В дистрибутиве на основе RPM вы максимально используете пакеты RPM.

Никогда не запускайтесь pip от имени пользователя root

Вы не должны использовать pip его от имени пользователя root (или запрашивать проблемы). Существует целая инфраструктура пакетов Python, которые можно установить, yum и это то, что вы должны использовать.

Вы все еще можете использовать pip для установки модулей Python, но только в очень редких случаях, когда модуль Python недоступен в виде пакета. В этом случае вы должны использовать pip внутри виртуальной среды Python. Ваш случай таков.

Убедитесь, что вы исправили yum базовые, EPEL и настроили репозитории SCLO, поскольку CentOS 6 - это EOL.

Затем:

 # Ensure EPEL repository
yum -y install epel-release
# fix EPEL repo due to EOL:
curl https://www.getpagespeed.com/files/centos6-epel-eol.repo --output /etc/yum.repos.d/epel.repo
yum -y install centos-release-scl-rh
# don't forget to fix repository configuration due to EOL:
curl https://www.getpagespeed.com/files/centos6-scl-eol.repo --output /etc/yum.repos.d/CentOS-SCLo-scl.repo
curl https://www.getpagespeed.com/files/centos6-scl-rh-eol.repo --output /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo
# install python 3.6 from Software collection packages (installing virtualenv will pick up both the base python and its pip package)
yum -y install rh-python36-python-virtualenv
 

Теперь вы можете создать виртуальную среду с любыми пакетами из pip, но сначала вам нужно активировать коллекцию программного обеспечения в вашей оболочке, пример:

 . /opt/rh/rh-python36/enable
cd ${HOME}
# create "myapp" virtual environment
virtualenv myapp 
# install desired packages using virtualenv's pip (will install to the virtualenv and not damage your system)
./myapp/bin/pip install cymysql
 

Ответ №2:

Не переходите на версию pip 20 в системе Centos 6, иначе диски с предварительно скомпилированными библиотеками c сломаются. Короче говоря, сначала сделайте это:

 pip install --upgrade pip==20.1.0
 

После этого вы можете установить cymysql

, '', sys.argv[0])
sys.exit(
load_entry_point('pip==21.0', 'console_scripts', 'pip')() //**THIS IS LINE 11**
)
Строки с 57 по 62 в Main.py


Комментарии:

1. pip 21.0 py2.7 , видите? Проверьте с помощью pip --version

Ответ №1:

amp; tldr;

В дистрибутиве на основе RPM вы максимально используете пакеты RPM.

Никогда не запускайтесь pip от имени пользователя root

Вы не должны использовать pip его от имени пользователя root (или запрашивать проблемы). Существует целая инфраструктура пакетов Python, которые можно установить, yum и это то, что вы должны использовать.

Вы все еще можете использовать pip для установки модулей Python, но только в очень редких случаях, когда модуль Python недоступен в виде пакета. В этом случае вы должны использовать pip внутри виртуальной среды Python. Ваш случай таков.

Убедитесь, что вы исправили yum базовые, EPEL и настроили репозитории SCLO, поскольку CentOS 6 — это EOL.

Затем:


Теперь вы можете создать виртуальную среду с любыми пакетами из pip, но сначала вам нужно активировать коллекцию программного обеспечения в вашей оболочке, пример:


Ответ №2:

Не переходите на версию pip 20 в системе Centos 6, иначе диски с предварительно скомпилированными библиотеками c сломаются. Короче говоря, сначала сделайте это:


После этого вы можете установить cymysql