CryptographyDeprecationWarning: Python 2 ไม่ได้รับการสนับสนุนจากทีม Python core อีกต่อไป

Sep 09 2020

ฉันกำลังพยายามเรียกใช้docker-compose(ซึ่งติดตั้งผ่านpip) แต่พบข้อผิดพลาดต่อไปนี้:

# pip install --quiet docker-compose
# docker-compose ps
/usr/local/lib/python2.7/dist-packages/paramiko/transport.py:33: CryptographyDeprecationWarning: Python 2 is no longer supported by the Python core team. Support for it is now deprecated in cryptography, and will be removed in a future release.
  from cryptography.hazmat.backends import default_backend
Traceback (most recent call last):
  File "/usr/local/bin/docker-compose", line 7, in <module>
    from compose.cli.main import main
  File "/usr/local/lib/python2.7/dist-packages/compose/cli/main.py", line 24, in <module>
    from ..config import ConfigurationError
  File "/usr/local/lib/python2.7/dist-packages/compose/config/__init__.py", line 6, in <module>
    from .config import ConfigurationError
  File "/usr/local/lib/python2.7/dist-packages/compose/config/config.py", line 51, in <module>
    from .validation import match_named_volumes
  File "/usr/local/lib/python2.7/dist-packages/compose/config/validation.py", line 12, in <module>
    from jsonschema import Draft4Validator
  File "/usr/local/lib/python2.7/dist-packages/jsonschema/__init__.py", line 21, in <module>
    from jsonschema._types import TypeChecker
  File "/usr/local/lib/python2.7/dist-packages/jsonschema/_types.py", line 3, in <module>
    from pyrsistent import pmap
  File "/usr/local/lib/python2.7/dist-packages/pyrsistent/__init__.py", line 3, in <module>
    from pyrsistent._pmap import pmap, m, PMap
  File "/usr/local/lib/python2.7/dist-packages/pyrsistent/_pmap.py", line 98
    ) from e
         ^
SyntaxError: invalid syntax
# 

# cat /etc/debian_version 
9.13
# python2 --version
Python 2.7.13
# python3 --version
Python 3.5.3
# 

มีวิธีบังคับdocker-composeให้ใช้ python3 แทนpython( python2) หรือไม่?


@Micromegas / @MikaelH

# apt-get -q install python3-pip
# pip3 install --quiet docker-compose
# docker-compose ps
/usr/local/lib/python3.5/dist-packages/paramiko/transport.py:33: CryptographyDeprecationWarning: Python 3.5 support will be dropped in the next release ofcryptography. Please upgrade your Python.
  from cryptography.hazmat.backends import default_backend
Name   Command   State   Ports
------------------------------
# 

คำตอบ

7 Ash Sep 09 2020 at 09:40

นี่คือปัญหาของเวอร์ชันล่าสุด (0.17.0) ของ pyrsistent

คุณควรติดตั้งเวอร์ชันที่ผ่านมา

pip uninstall pyrsistent
pip install pyrsistent==0.16.0
3 Micromegas Sep 09 2020 at 04:47

ฉันไม่รู้ว่าวิธีนี้จะช่วยแก้ปัญหาของคุณได้หรือไม่ แต่หวังว่าจะช่วยคุณแก้ปัญหาได้ ฉันมีปัญหาเดียวกัน แต่ฉันเหนื่อยที่จะทำงานpip install docker-composeใน gitlab CI ของฉัน

การกำหนดค่าของฉันก่อนหน้านี้ที่เกิดปัญหาคือ:

    - apk update
    - apk upgrade
    - apk add python python-dev py-pip build-base libffi-dev openssl-dev libgcc
    - pip install docker-compose

สิ่งที่แก้ไขให้ฉันมีดังต่อไปนี้:

    - apk update
    - apk upgrade
    - apk add build-base libffi-dev openssl-dev libgcc
    - apk add python3
    - apk add python3-dev
    - apk add py3-pip
    - pip3 install docker-compose

ดังนั้นฉันเดาว่าความคิดเห็นของ @ MikaelH เป็นจุดที่ พยายามอัปเดตเป็น pip3 และตรวจสอบว่าคุณได้ติดตั้งการอ้างอิงที่จำเป็นแล้ว ขึ้นอยู่กับสภาพแวดล้อม / ระบบของคุณ ถ้าคุณอยู่ใน Debian คุณสามารถใช้sudo apt-get install python3, sudo apt-get install python3-pipและsudo apt-get install python3-dev libffi-dev libssl-devฯลฯ ...

2 daiwai Sep 11 2020 at 18:31

เนื่องจาก Python 2 สิ้นสุดอายุการใช้งานแล้วควรใช้ pip เวอร์ชัน Python 3 เพื่อติดตั้งนักเทียบท่า บน Debian หรือ Ubuntu สามารถติดตั้งได้ด้วย:

apt-get install python3-pip

หลังจากนั้นสามารถใช้ Python 3 เวอร์ชัน pip เพื่อติดตั้ง Docker Compose ได้

pip3 install docker-compose