#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