CryptographyDeprecationWarning: Python 2 không còn được nhóm cốt lõi Python hỗ trợ nữa

Sep 09 2020

Tôi đang cố gắng chạy docker-compose(đã được cài đặt qua pip), nhưng gặp lỗi sau:

# 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
# 

Có cách nào để buộc docker-composesử dụng python3 thay vì python( python2) không?


@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
------------------------------
# 

Trả lời

7 Ash Sep 09 2020 at 09:40

Đây là sự cố của phiên bản mới nhất (0.17.0) của pyrsvial.

Bạn nên cài đặt phiên bản trước.

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

Tôi không biết liệu điều này có khắc phục được sự cố của bạn hay không nhưng tôi hy vọng nó có thể giúp bạn gỡ rối. Tôi đã gặp vấn đề tương tự, nhưng tôi mệt mỏi khi chạy pip install docker-composetrong gitlab CI của mình.

Các cấu hình của tôi trước đây, nơi sự cố xảy ra là:

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

Điều đã sửa nó cho tôi là như sau:

    - 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

Vì vậy, tôi đoán nhận xét của @ MikaelH là đúng. Cố gắng cập nhật lên pip3 và đảm bảo rằng bạn đã cài đặt các phần phụ thuộc cần thiết. Điều đó sẽ phụ thuộc vào môi trường / hệ thống của bạn. Nếu bạn đang sử dụng Debian, bạn có thể sử dụng sudo apt-get install python3, sudo apt-get install python3-pipvà sudo apt-get install python3-dev libffi-dev libssl-devv.v.

2 daiwai Sep 11 2020 at 18:31

Vì Python 2 hiện đã hết hạn sử dụng, nên sử dụng phiên bản Python 3 của pip để cài đặt docker-comp. Trên Debian hoặc Ubuntu, nó có thể được cài đặt bằng:

apt-get install python3-pip

Sau đó, phiên bản Python 3 pip có thể được sử dụng để cài đặt Docker Compose

pip3 install docker-compose