【问题标题】:Why do I get syntax error when I try to do a pip install on CentOS 6?当我尝试在 CentOS 6 上进行 pip 安装时,为什么会出现语法错误?
【发布时间】:2022-02-10 21:24:30
【问题描述】:

我正在尝试通过以下命令在 CentOS 6 系统上安装一个名为 cymysql 的 python 模块

yum install -y python-setuptools && easy_install pip && pip install cymysql

但是我收到一条错误消息说有几行得到 SyntaxError: invalid syntax (请参阅下面的错误代码)---它实际上是在我运行第三个命令时发生的 pip 安装 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)?$', '', sys.argv[0])
   sys.exit(
       load_entry_point('pip==21.0', 'console_scripts', 'pip')()  //**THIS IS LINE 11**
   )

Main.py 中的第 57 到 62 行

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)

【问题讨论】:

  • pip 21.0 py2.7,看到了吗?验证pip --version

标签: python-2.7 pip centos


【解决方案1】:

&tldr;

在基于 RPM 的发行版上,您尽可能多地使用 RPM 包。

永远不要以 root 用户身份运行 pip

must not use pip as root user(或自找麻烦)。 可以通过yum 安装一整套 Python 包基础设施,这是您应该使用的。

您仍然可以使用pip 安装 Python 模块,但仅在 Python 模块无法作为包提供的极少数情况下使用。在这种情况下,您必须在虚拟 Python 环境中使用 pip。你的情况就是这样。

确保您拥有fixed yum for base, EPEL and set up SCLO repositories,因为 CentOS 6 已停产。

然后:

# 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 中的任何包创建虚拟环境,但您必须先在 shell 中激活软件集合,例如:

. /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】:

    在 Centos 6 系统上不要超过 pip 版本 20,否则带有预编译 c 库的轮子会损坏。 长话短说,先这样做:

    pip install --upgrade pip==20.1.0
    

    之后就可以安装cymysql了

    【讨论】:

      猜你喜欢
      • 2021-05-27
      • 2021-06-27
      • 1970-01-01
      • 1970-01-01
      • 2019-10-02
      • 2014-08-27
      • 2021-05-05
      • 2011-08-24
      • 1970-01-01
      相关资源
      最近更新 更多