Pycharm chuyển đổi python 2 thành 3

Ứng dụng của bạn đã sẵn sàng để đạt được khả năng tương thích hoàn toàn với Python 3, nhưng vấn đề về các thành phần phụ thuộc của ứng dụng vẫn còn

Không có gì lạ khi các dự án tích lũy các phụ thuộc không còn được duy trì và do đó thiếu hỗ trợ Python 3

Trong một số trường hợp, tất cả những gì bạn cần làm là cập nhật phần phụ thuộc lên phiên bản mới hơn; . Đó là vì một số gói có thể đã bỏ Python 2

Dù sao đi nữa, tại thời điểm này, tốt nhất bạn nên tập trung vào những chiến thắng dễ dàng

Hầu hết các gói của bạn có thể đã tương thích hoặc chỉ yêu cầu cập nhật lên phiên bản mới hơn. Theo nguyên tắc chung, chúng tôi khuyên bạn nên cập nhật lên bản phát hành mới nhất của từng thành phần phụ thuộc để đảm bảo an toàn

Kiểm tra từng phụ thuộc một có thể tốn thời gian trong các dự án lớn hơn. Bạn có thể tạo điều kiện thuận lợi cho quy trình bằng cách chạy “caniusepython3” trên “yêu cầu của bạn. txt” [tạo một tài khoản với “pip freeze > các yêu cầu. txt” nếu bạn không có]

Công cụ này còn lâu mới chính xác, nhưng nó đủ tốt để đạt được mục tiêu chính của chúng ta ở đây. đánh giá xem còn bao nhiêu công việc trước khi bạn có thể thực hiện chuyển đổi cuối cùng sang Python 3

Các nhánh tương thích với Python 3

Không có gì lạ khi biết rằng một gói đã bị các tác giả ban đầu của nó bỏ rơi hoàn toàn. Tuy nhiên, bạn vẫn nên duyệt qua trình theo dõi vấn đề về kho lưu trữ GitHub hoặc chỉ mục PyPI của gói, vì những người khác có thể đã gặp phải vấn đề tương tự như bạn và đã tạo một nhánh rẽ tương thích với Python 3

Nếu bạn không thể xác định gói thay thế Python 3 đang hoạt động, hãy hoãn nâng cấp hoặc thay thế gói đó sang giai đoạn sau. Bạn có cá lớn hơn để chiên

Xử lý backport

Một số tính năng được thêm vào Python 3 đã được nhập lại dưới dạng các gói có thể cài đặt riêng biệt. Các ví dụ phổ biến về điều này bao gồm “sub process32” và “funcools32. ”

Các backport này có xu hướng không tương thích với Python 3 và sẽ không thành công nếu bạn cố gắng cài đặt chúng. Bạn có thể sử dụng điểm đánh dấu môi trường để đảm bảo điều đó không xảy ra

Chúng ta có thể chuyển đổi tập lệnh Python2 thành tập lệnh Python3 bằng cách sử dụng mô-đun 2to3. Nó thay đổi cú pháp Python2 thành cú pháp Python3. Chúng tôi có thể thay đổi tất cả các tệp trong một thư mục cụ thể từ python2 thành python3

Cài đặt

Mô-đun này không được tích hợp sẵn với Python. Để cài đặt loại này, lệnh dưới đây trong thiết bị đầu cuối

pip install 2to3

cú pháp

2to3 [file or folder] -w

Nếu chúng tôi muốn thay đổi tất cả các tệp trong thư mục hiện đang mở và tất cả các tệp trong thư mục con từ Python2 thành Python3, hãy nhập lệnh bên dưới

2to3.-w

Nếu chúng ta muốn thay đổi một tệp cụ thể trong thư mục hiện tại từ Python2 sang Python3 thì hãy nhập lệnh sau

2to3 gfg.py -w

Ví dụ. Hãy xem xét một tệp Python2 đơn giản

Để chuyển đổi tệp này từ Python2 sang Python3, hãy mở terminal trong thư mục chứa tệp và nhập lệnh bên dưới

Tôi có một dự án ML lớn bằng mã python 2 và tôi mới bắt đầu sử dụng PyCharm làm IDE. Tôi hiện đang sử dụng WinPython 3. 4 và tốt nhất là tôi muốn làm mọi thứ trong python 3 thay vì tiếp tục sử dụng phiên bản cũ 2. Khi tôi nhân bản dự án từ git, một cửa sổ bật lên trong pycharm xuất hiện, đó là một thứ gì đó dọc theo dòng chuyển đổi mã thành 3 từ 2 nhưng tôi không thực sự nghĩ về nó và đã thoát khỏi nó. Làm cách nào để chuyển đổi nó?

2to3 là ​​một chương trình Python đọc Python 2. x và áp dụng một loạt trình sửa lỗi để biến nó thành Python 3 hợp lệ. mã x. Thư viện tiêu chuẩn chứa một bộ sửa lỗi phong phú sẽ xử lý hầu hết tất cả mã. Tuy nhiên, thư viện hỗ trợ 2to3

$ 2to3 example.py
1 là một thư viện chung và linh hoạt, vì vậy bạn có thể viết các trình sửa lỗi của riêng mình cho 2to3

Không dùng nữa kể từ phiên bản 3. 11, sẽ bị xóa trong phiên bản 3. 13. Mô-đun

$ 2to3 example.py
1 được đánh dấu là đang chờ ngừng sử dụng trong Python 3. 9 [tăng
$ 2to3 example.py
3 khi nhập] và hoàn toàn không dùng nữa trong Python 3. 11 [nâng cao
$ 2to3 example.py
4]. Công cụ
$ 2to3 example.py
5 là một phần của điều đó. Nó sẽ bị xóa trong Python 3. 13.

Sử dụng 2to3¶

2to3 thường sẽ được cài đặt với trình thông dịch Python dưới dạng tập lệnh. Nó cũng nằm trong thư mục

$ 2to3 example.py
6 của thư mục gốc Python

Các đối số cơ bản của 2to3 là ​​danh sách các tệp hoặc thư mục cần chuyển đổi. Các thư mục được duyệt qua đệ quy cho các nguồn Python

Đây là một mẫu Python 2. tệp nguồn x,

$ 2to3 example.py
7

2to3 [file or folder] -w
1

Nó có thể được chuyển đổi thành Python 3. xcode qua 2 đến 3 trên dòng lệnh

$ 2to3 example.py

Một sự khác biệt so với tệp nguồn ban đầu được in. 2to3 cũng có thể ghi ngay các sửa đổi cần thiết vào tệp nguồn. [Một bản sao lưu của tệp gốc được thực hiện trừ khi cũng cung cấp

$ 2to3 example.py
8. ] Ghi lại các thay đổi được kích hoạt với cờ
$ 2to3 example.py
9

2to3 [file or folder] -w
5

Sau khi chuyển đổi,

$ 2to3 example.py
7 trông như thế này

2to3 [file or folder] -w
7

Nhận xét và thụt đầu dòng chính xác được giữ nguyên trong suốt quá trình dịch thuật

Theo mặc định, 2to3 chạy một bộ trình sửa lỗi được xác định trước . Cờ

2to3 [file or folder] -w
51 liệt kê tất cả các trình sửa lỗi có sẵn. Có thể cung cấp một bộ sửa lỗi rõ ràng để chạy với
2to3 [file or folder] -w
52. Tương tự như vậy,
2to3 [file or folder] -w
53 vô hiệu hóa một cách rõ ràng trình sửa lỗi. Ví dụ sau chỉ chạy bộ sửa lỗi
2to3 [file or folder] -w
54 và
2to3 [file or folder] -w
55.

2to3.-w
3

Lệnh này chạy mọi trình sửa lỗi ngoại trừ trình sửa lỗi

2to3 [file or folder] -w
56

2to3.-w
5

Một số trình sửa lỗi rõ ràng, nghĩa là chúng không được chạy theo mặc định và phải được liệt kê trên dòng lệnh để được chạy. Tại đây, ngoài các trình sửa lỗi mặc định, trình sửa lỗi

2to3 [file or folder] -w
57 được chạy

2to3.-w
7

Lưu ý cách chuyển

2to3 [file or folder] -w
58 cho phép tất cả các trình sửa lỗi mặc định

Đôi khi 2to3 sẽ tìm thấy một chỗ trong mã nguồn của bạn cần thay đổi, nhưng 2to3 không thể tự động sửa. Trong trường hợp này, 2to3 sẽ in cảnh báo bên dưới diff cho một tệp. Bạn nên giải quyết cảnh báo để tuân thủ 3. mã x

2to3 cũng có thể cấu trúc lại doctests. Để bật chế độ này, hãy sử dụng cờ

2to3 [file or folder] -w
59. Lưu ý rằng chỉ doctests sẽ được cấu trúc lại. Điều này cũng không yêu cầu mô-đun phải là Python hợp lệ. Ví dụ: các ví dụ giống như doctest trong tài liệu reST cũng có thể được cấu trúc lại với tùy chọn này

Tùy chọn

2to3 [file or folder] -w
70 cho phép xuất ra nhiều thông tin hơn về quá trình dịch thuật

Vì một số câu lệnh in có thể được phân tích thành lời gọi hàm hoặc câu lệnh, 2to3 không phải lúc nào cũng có thể đọc các tệp chứa hàm in. Khi 2to3 phát hiện sự hiện diện của chỉ thị trình biên dịch

2to3 [file or folder] -w
71, nó sẽ sửa đổi ngữ pháp bên trong của nó để diễn giải
2to3 [file or folder] -w
72 như một hàm. Thay đổi này cũng có thể được kích hoạt thủ công với cờ
2to3 [file or folder] -w
73. Sử dụng
2to3 [file or folder] -w
73 để chạy các trình sửa lỗi trên mã đã được chuyển đổi câu lệnh in của nó. Ngoài ra,
2to3 [file or folder] -w
75 có thể được sử dụng để biến
2to3 [file or folder] -w
76 thành một hàm

Tùy chọn

2to3 [file or folder] -w
77 hoặc
2to3 [file or folder] -w
78 cho phép đặc điểm kỹ thuật của một thư mục thay thế cho các tệp đầu ra đã xử lý được ghi vào. Cờ
$ 2to3 example.py
8 là bắt buộc khi sử dụng cờ này vì các tệp sao lưu không có ý nghĩa khi không ghi đè lên các tệp đầu vào

Mới trong phiên bản 3. 2. 3. Tùy chọn

2to3 [file or folder] -w
77 đã được thêm vào.

Cờ

2to3.-w
31 hoặc
2to3.-w
32 yêu cầu 2to3 luôn ghi tệp đầu ra ngay cả khi không cần thay đổi tệp. Điều này hữu ích nhất với
2to3 [file or folder] -w
77 để toàn bộ cây nguồn Python được sao chép với bản dịch từ thư mục này sang thư mục khác. Tùy chọn này ngụ ý cờ
$ 2to3 example.py
9 vì nó sẽ không có ý nghĩa gì khác

Mới trong phiên bản 3. 2. 3. Cờ

2to3.-w
31 đã được thêm vào.

Tùy chọn

2to3.-w
36 chỉ định một chuỗi để nối vào tất cả các tên tệp đầu ra. Cần có cờ
$ 2to3 example.py
8 khi chỉ định điều này vì không cần sao lưu khi ghi vào các tên tệp khác nhau. Ví dụ

$ 2to3 example.py
8

Sẽ khiến một tệp đã chuyển đổi có tên

2to3.-w
38 được ghi

Mới trong phiên bản 3. 2. 3. Tùy chọn

2to3.-w
36 đã được thêm vào.

Để dịch toàn bộ dự án từ cây thư mục này sang cây thư mục khác, hãy sử dụng

$ 2to3 example.py
1

Fixers¶

Mỗi bước chuyển đổi mã được gói gọn trong một trình sửa lỗi. Lệnh

2to3.-w
50 liệt kê chúng. Như đã nêu ở trên , mỗi cái có thể được bật và tắt riêng lẻ. Chúng được mô tả ở đây chi tiết hơn.

áp dụng

Loại bỏ việc sử dụng

2to3.-w
51. Ví dụ:
2to3.-w
52 được chuyển đổi thành
2to3.-w
53

khẳng định

Thay thế tên phương thức

2to3.-w
54 không dùng nữa bằng tên chính xác

Từ

Đến

2to3.-w
55

2to3.-w
56

2to3.-w
57

2to3.-w
56

2to3.-w
59

2to3.-w
70

2to3.-w
71

2to3.-w
70

2to3.-w
73

2to3.-w
74

2to3.-w
75

2to3.-w
74

2to3.-w
77

2to3.-w
78

2to3.-w
79

$ 2to3 example.py
80

$ 2to3 example.py
81

$ 2to3 example.py
82

$ 2to3 example.py
83

$ 2to3 example.py
82

$ 2to3 example.py
85

$ 2to3 example.py
86

$ 2to3 example.py
87

$ 2to3 example.py
86

chuỗi cơ sở

Chuyển đổi

$ 2to3 example.py
89 thành
$ 2to3 example.py
10

bộ đệm

Chuyển đổi

$ 2to3 example.py
11 thành
$ 2to3 example.py
12. Trình sửa lỗi này là tùy chọn vì API
$ 2to3 example.py
12 tương tự nhưng không hoàn toàn giống với API của
$ 2to3 example.py
11

dict

Sửa các phương pháp lặp lại từ điển.

$ 2to3 example.py
15 được chuyển đổi thành
$ 2to3 example.py
16,
$ 2to3 example.py
17 thành
$ 2to3 example.py
18 và
$ 2to3 example.py
19 thành
$ 2to3 example.py
20. Tương tự,
$ 2to3 example.py
21,
$ 2to3 example.py
22 và
$ 2to3 example.py
23 lần lượt được chuyển đổi thành
$ 2to3 example.py
16,
$ 2to3 example.py
18 và
$ 2to3 example.py
20. Nó cũng kết thúc các cách sử dụng hiện có của
$ 2to3 example.py
16,
$ 2to3 example.py
18 và
$ 2to3 example.py
20 trong lệnh gọi tới
$ 2to3 example.py
00

ngoại trừ

Chuyển đổi

$ 2to3 example.py
01 thành
$ 2to3 example.py
02

exec

Chuyển đổi câu lệnh

$ 2to3 example.py
03 thành hàm
2to3 [file or folder] -w
76

execfile

Loại bỏ việc sử dụng

$ 2to3 example.py
05. Đối số của
$ 2to3 example.py
05 được gói gọn trong các lệnh gọi tới
$ 2to3 example.py
07,
$ 2to3 example.py
08 và
2to3 [file or folder] -w
76

thoát chức

Thay đổi nhiệm vụ của

$ 2to3 example.py
10 để sử dụng mô-đun
$ 2to3 example.py
11

bộ lọc

Kết thúc việc sử dụng

$ 2to3 example.py
12 trong cuộc gọi
$ 2to3 example.py
00

funcattrs

Sửa các thuộc tính chức năng đã được đổi tên. Ví dụ:

$ 2to3 example.py
14 được chuyển đổi thành
$ 2to3 example.py
15

tương lai

Loại bỏ câu lệnh

$ 2to3 example.py
16

getcwdu

Đổi tên

$ 2to3 example.py
17 thành
$ 2to3 example.py
18

has_key

Thay đổi

$ 2to3 example.py
19 thành
$ 2to3 example.py
20

thành ngữ

Trình sửa lỗi tùy chọn này thực hiện một số phép biến đổi làm cho mã Python trở nên đặc ngữ hơn. Loại so sánh như

$ 2to3 example.py
21 và
$ 2to3 example.py
22 được chuyển đổi thành
$ 2to3 example.py
23.
$ 2to3 example.py
24 trở thành
$ 2to3 example.py
25. Trình sửa lỗi này cũng cố gắng sử dụng
$ 2to3 example.py
26 ở những nơi thích hợp. Ví dụ, khối này

$ 2to3 example.py
2

được đổi thành

$ 2to3 example.py
0

nhập

Phát hiện nhập khẩu anh chị em và chuyển đổi chúng thành nhập khẩu tương đối

nhập

Xử lý đổi tên mô-đun trong thư viện chuẩn

imports2

Xử lý đổi tên các mô-đun khác trong thư viện chuẩn. Nó tách biệt với trình sửa lỗi

2to3 [file or folder] -w
54 chỉ vì những hạn chế kỹ thuật

đầu vào

Chuyển đổi

$ 2to3 example.py
28 thành
$ 2to3 example.py
29

thực tập sinh

Chuyển đổi

$ 2to3 example.py
30 thành
$ 2to3 example.py
31

trường hợp

Sửa các loại trùng lặp trong đối số thứ hai của

$ 2to3 example.py
32. Ví dụ:
$ 2to3 example.py
33 được chuyển đổi thành
$ 2to3 example.py
34 và
$ 2to3 example.py
35 được chuyển đổi thành
$ 2to3 example.py
36

itertools_imports

Xóa nhập khẩu của

$ 2to3 example.py
37,
$ 2to3 example.py
38 và
$ 2to3 example.py
39. Nhập khẩu của
$ 2to3 example.py
40 cũng được đổi thành
$ 2to3 example.py
41

công cụ iter

Thay đổi cách sử dụng của

$ 2to3 example.py
37,
$ 2to3 example.py
38 và
$ 2to3 example.py
39 thành tương đương được tích hợp sẵn của chúng.
$ 2to3 example.py
40 được đổi thành
$ 2to3 example.py
41

dài

Đổi tên

$ 2to3 example.py
47 thành
$ 2to3 example.py
48

bản đồ

Kết thúc cuộc gọi

$ 2to3 example.py
49 trong cuộc gọi
$ 2to3 example.py
00. Nó cũng thay đổi
$ 2to3 example.py
51 thành
$ 2to3 example.py
52. Sử dụng
$ 2to3 example.py
53 sẽ vô hiệu hóa trình sửa lỗi này

siêu lớp

Chuyển đổi cú pháp siêu dữ liệu cũ [

$ 2to3 example.py
54 trong nội dung lớp] thành mới [
$ 2to3 example.py
55]

methodattrs

Sửa tên thuộc tính phương pháp cũ. Ví dụ:

$ 2to3 example.py
56 được chuyển đổi thành
$ 2to3 example.py
57

ne

Chuyển đổi cú pháp không bằng cũ,

$ 2to3 example.py
58, thành
$ 2to3 example.py
59

tiếp theo

Chuyển đổi việc sử dụng các phương thức

$ 2to3 example.py
60 của iterator thành hàm
$ 2to3 example.py
60. Nó cũng đổi tên các phương thức
$ 2to3 example.py
60 thành
$ 2to3 example.py
63

khác không

Đổi tên định nghĩa của các phương thức được gọi là

$ 2to3 example.py
64 thành
$ 2to3 example.py
65

chữ số

Chuyển đổi các ký tự bát phân thành cú pháp mới

toán tử

Chuyển đổi các cuộc gọi đến các chức năng khác nhau trong mô-đun

$ 2to3 example.py
66 sang các cuộc gọi chức năng khác nhưng tương đương. Khi cần, các câu lệnh
$ 2to3 example.py
67 thích hợp được thêm vào, e. g.
$ 2to3 example.py
68. Các ánh xạ sau đây được thực hiện

Từ

Đến

$ 2to3 example.py
69

$ 2to3 example.py
70

$ 2to3 example.py
71

$ 2to3 example.py
72

$ 2to3 example.py
73

$ 2to3 example.py
74

$ 2to3 example.py
75

$ 2to3 example.py
76

$ 2to3 example.py
77

$ 2to3 example.py
78

$ 2to3 example.py
79

$ 2to3 example.py
80

$ 2to3 example.py
81

$ 2to3 example.py
82

dấu ngoặc

Thêm dấu ngoặc đơn bổ sung khi chúng được yêu cầu trong phần hiểu danh sách. Ví dụ:

$ 2to3 example.py
83 trở thành
$ 2to3 example.py
84

in

Chuyển đổi câu lệnh

$ 2to3 example.py
85 thành hàm
2to3 [file or folder] -w
72

tăng

Chuyển đổi

$ 2to3 example.py
87 thành
$ 2to3 example.py
88 và
$ 2to3 example.py
89 thành
$ 2to3 example.py
90. Nếu
$ 2to3 example.py
91 là một bộ, bản dịch sẽ không chính xác vì việc thay thế các bộ cho các ngoại lệ đã bị loại bỏ trong 3. 0

Làm cách nào để chuyển đổi Python 2 sang Python 3?

Chúng tôi có thể chuyển đổi tập lệnh Python2 thành tập lệnh Python3 bằng cách sử dụng mô-đun 2to3 . Nó thay đổi cú pháp Python2 thành cú pháp Python3. Chúng tôi có thể thay đổi tất cả các tệp trong một thư mục cụ thể từ python2 thành python3.

Mã Python 2 có chạy trong Python 3 không?

Thư viện tương lai python được tận dụng dựa trên cơ sở mã tương thích với Python 2 bằng cách sử dụng lệnh tương lai, cho phép phát hiện và dịch Python 2. 6 hoặc 2. 7 mã cụ thể, từ đó cho phép thực thi trong Python 3. 3+ môi trường

Làm cách nào để sử dụng python3 thay vì Python2?

bashrc alias python=python3 Khởi động lại trình bao và nhập python và python3 sẽ bắt đầu thay vì python2. Lưu câu trả lời này.

Chủ Đề