Hướng dẫn python c++ dependencies - phụ thuộc python c ++

Các hướng dẫn này bao gồm cách lấy một bản sao hoạt động của mã nguồn và phiên bản biên dịch của trình thông dịch Cpython (CPython là phiên bản Python có sẵn từ https://www.python.org/). Nó cũng cung cấp một cái nhìn tổng quan về cấu trúc thư mục của mã nguồn cpython.

Ngoài ra, nếu bạn đã cài đặt Docker, bạn có thể muốn sử dụng hình ảnh chính thức của chúng tôi. Chúng chứa các bản phát hành mới nhất của một số phiên bản Python, cùng với Git Head và chỉ được cung cấp cho mục đích phát triển và thử nghiệm.

Xem thêm

Tham chiếu nhanh đưa ra tóm tắt ngắn gọn về quá trình từ việc cài đặt GIT đến gửi yêu cầu kéo.Quick Reference gives brief summary of the process from installing git to submitting a pull request.

Cài đặt ________ 20#

CPython được phát triển bằng cách sử dụng Git để kiểm soát phiên bản. Chương trình dòng lệnh Git được đặt tên là

$ git remote -v
origin  :/cpython.git (fetch)
origin  :/cpython.git (push)
upstream        https://github.com/python/cpython (fetch)
upstream        :/cpython.git (push)
$ git config branch.main.remote
upstream
0; Điều này cũng được sử dụng để đề cập đến chính Git. Git dễ dàng có sẵn cho tất cả các hệ điều hành chung.

  • Cài đặt

    Vì repo Cpython được lưu trữ trên GitHub, vui lòng tham khảo các hướng dẫn thiết lập GitHub hoặc hướng dẫn dự án Git để hướng dẫn cài đặt từng bước. Bạn cũng có thể muốn xem xét một máy khách đồ họa như Tortoisgit hoặc GitHub Desktop.

  • Cấu hình

    Định cấu hình tên và email của bạn và tạo khóa SSH vì điều này sẽ cho phép bạn tương tác với GitHub mà không cần gõ tên người dùng và mật khẩu mỗi khi bạn thực thi lệnh, chẳng hạn như

    $ git remote -v
    origin  :/cpython.git (fetch)
    origin  :/cpython.git (push)
    upstream        https://github.com/python/cpython (fetch)
    upstream        :/cpython.git (push)
    $ git config branch.main.remote
    upstream
    
    2,
    $ git remote -v
    origin  :/cpython.git (fetch)
    origin  :/cpython.git (push)
    upstream        https://github.com/python/cpython (fetch)
    upstream        :/cpython.git (push)
    $ git config branch.main.remote
    upstream
    
    3 hoặc
    $ git remote -v
    origin  :/cpython.git (fetch)
    origin  :/cpython.git (push)
    upstream        https://github.com/python/cpython (fetch)
    upstream        :/cpython.git (push)
    $ git config branch.main.remote
    upstream
    
    4. Trên Windows, bạn cũng nên kích hoạt Autoclf.your name and email and create an SSH key as this will allow you to interact with GitHub without typing a username and password each time you execute a command, such as
    $ git remote -v
    origin  :/cpython.git (fetch)
    origin  :/cpython.git (push)
    upstream        https://github.com/python/cpython (fetch)
    upstream        :/cpython.git (push)
    $ git config branch.main.remote
    upstream
    
    2,
    $ git remote -v
    origin  :/cpython.git (fetch)
    origin  :/cpython.git (push)
    upstream        https://github.com/python/cpython (fetch)
    upstream        :/cpython.git (push)
    $ git config branch.main.remote
    upstream
    
    3, or
    $ git remote -v
    origin  :/cpython.git (fetch)
    origin  :/cpython.git (push)
    upstream        https://github.com/python/cpython (fetch)
    upstream        :/cpython.git (push)
    $ git config branch.main.remote
    upstream
    
    4. On Windows, you should also enable autocrlf.

Nhận mã nguồn#

REPO CPYThon được lưu trữ trên GitHub. Để có được một bản sao của mã nguồn, bạn nên bỏ kho lưu trữ Python trên GitHub, tạo một bản sao cục bộ của ngã ba cá nhân của bạn và định cấu hình các điều khiển từ xa.fork the Python repository on GitHub, create a local clone of your personal fork, and configure the remotes.

Bạn sẽ chỉ cần thực hiện các bước này một lần cho mỗi máy:

  1. Truy cập https://github.com/python/cpython.

  2. Nhấn Fork lên trên cùng bên phải.Fork on the top right.

  3. Khi được hỏi ở đâu để rẽ vào kho lưu trữ, hãy chọn đặt nó vào tên người dùng của bạn.

  4. Ngã ba của bạn sẽ được tạo tại

    $ git remote -v
    origin  :/cpython.git (fetch)
    origin  :/cpython.git (push)
    upstream        https://github.com/python/cpython (fetch)
    upstream        :/cpython.git (push)
    $ git config branch.main.remote
    upstream
    
    5.

  5. Clone của bạn Fork Fork (thay thế

    $ git remote -v
    origin  :/cpython.git (fetch)
    origin  :/cpython.git (push)
    upstream        https://github.com/python/cpython (fetch)
    upstream        :/cpython.git (push)
    $ git config branch.main.remote
    upstream
    
    6 bằng tên người dùng của bạn):

    $ git clone :/cpython.git
    

    (Bạn có thể sử dụng cả URL dựa trên SSH hoặc dựa trên HTTPS.)

  1. Thêm một điều khiển từ xa

    $ git remote -v
    origin  :/cpython.git (fetch)
    origin  :/cpython.git (push)
    upstream        https://github.com/python/cpython (fetch)
    upstream        :/cpython.git (push)
    $ git config branch.main.remote
    upstream
    
    7, sau đó định cấu hình
    $ git remote -v
    origin  :/cpython.git (fetch)
    origin  :/cpython.git (push)
    upstream        https://github.com/python/cpython (fetch)
    upstream        :/cpython.git (push)
    $ git config branch.main.remote
    upstream
    
    0 để kéo
    $ git remote -v
    origin  :/cpython.git (fetch)
    origin  :/cpython.git (push)
    upstream        https://github.com/python/cpython (fetch)
    upstream        :/cpython.git (push)
    $ git config branch.main.remote
    upstream
    
    9 từ
    $ git remote -v
    origin  :/cpython.git (fetch)
    origin  :/cpython.git (push)
    upstream        https://github.com/python/cpython (fetch)
    upstream        :/cpython.git (push)
    $ git config branch.main.remote
    upstream
    
    7 và luôn luôn đẩy sang
    $ ./configure --with-pydebug
    
    1:

    $ cd cpython
    $ git remote add upstream https://github.com/python/cpython
    $ git config --local branch.main.remote upstream
    $ git remote set-url --push upstream :/cpython.git
    

  2. Xác minh rằng thiết lập của bạn là chính xác:

    $ git remote -v
    origin  :/cpython.git (fetch)
    origin  :/cpython.git (push)
    upstream        https://github.com/python/cpython (fetch)
    upstream        :/cpython.git (push)
    $ git config branch.main.remote
    upstream
    

Để biết thêm thông tin về các lệnh này, hãy xem Git Bootcamp và Cheat Sheat.Git Bootcamp and Cheat Sheat.

Nếu bạn đã làm mọi thứ một cách chính xác, bây giờ bạn nên có một bản sao của mã trong thư mục

$ ./configure --with-pydebug
2 và hai điều khiển từ xa đề cập đến Fork GitHub của riêng bạn (
$ ./configure --with-pydebug
1) và kho lưu trữ CPython chính thức (
$ git remote -v
origin  :/cpython.git (fetch)
origin  :/cpython.git (push)
upstream        https://github.com/python/cpython (fetch)
upstream        :/cpython.git (push)
$ git config branch.main.remote
upstream
7).

Nếu bạn muốn một bản sao làm việc của một phiên bản Python đã phát hành, tức là, một phiên bản ở chế độ bảo trì, bạn có thể kiểm tra một nhánh phát hành. Chẳng hạn, để kiểm tra một bản sao làm việc của Python 3.8, làm

$ ./configure --with-pydebug
5.maintenance mode, you can checkout a release branch. For instance, to checkout a working copy of Python 3.8, do
$ ./configure --with-pydebug
5.

Bạn sẽ cần phải tổng hợp CPython khi bạn thực hiện bản cập nhật như vậy.

Xin lưu ý rằng Cpython sẽ nhận thấy rằng nó đang được chạy từ một bản sao làm việc. Điều này có nghĩa là nếu bạn chỉnh sửa mã nguồn CPython, trong bản sao làm việc của bạn, các thay đổi thành mã Python sẽ được thông dịch viên chọn để sử dụng và kiểm tra ngay lập tức. (Nếu bạn thay đổi mã C, bạn sẽ cần biên dịch lại các tệp bị ảnh hưởng như được mô tả bên dưới.)

Các bản vá cho tài liệu có thể được thực hiện từ cùng một kho lưu trữ; Xem bắt đầu.Getting Started.

Biên dịch và xây dựng#

Cpython cung cấp một số cờ biên dịch giúp gỡ lỗi nhiều thứ khác nhau. Mặc dù tất cả các lá cờ đã biết có thể được tìm thấy trong tệp

$ ./configure --with-pydebug
6, nhưng cái quan trọng nhất là cờ
$ ./configure --with-pydebug
7 tạo ra cái được gọi là bản dựng của Pydebug. Cờ này bật các kiểm tra độ tỉnh bổ sung khác nhau giúp nắm bắt các vấn đề chung. Việc sử dụng cờ rất phổ biến đến nỗi bật cờ là một tùy chọn biên dịch cơ bản.

Bạn nên luôn luôn phát triển theo bản dựng Pydebug của Cpython (ví dụ duy nhất khi bạn không nên là nếu bạn đang thực hiện các phép đo hiệu suất). Ngay cả khi chỉ làm việc trên mã Python thuần túy, bản dựng Pydebug cung cấp một số kiểm tra hữu ích mà người ta không nên bỏ qua.

UNIX#

Trình thông dịch Cpython cốt lõi chỉ cần được xây dựng trình biên dịch C, tuy nhiên, một số mô -đun mở rộng sẽ cần các tiêu đề phát triển cho các thư viện bổ sung (như thư viện ____38 để nén). Tùy thuộc vào những gì bạn dự định làm việc, bạn có thể cần cài đặt các yêu cầu bổ sung này để trình thông dịch được biên dịch hỗ trợ các tính năng mong muốn.

Nếu bạn muốn cài đặt các phụ thuộc tùy chọn này, hãy tham khảo phần phụ thuộc cài đặt bên dưới.Install dependencies section below.

Nếu bạn không cần phải cài đặt chúng, các bước cơ bản để xây dựng Python để phát triển là cấu hình nó và sau đó biên dịch nó.

Cấu hình thường là:

$ ./configure --with-pydebug

Nhiều cờ có sẵn cho

$ ./configure --with-pydebug
9, nhưng đây là mức tối thiểu bạn nên làm để có được bản dựng Pydebug của Cpython.

Ghi chú

Bạn có thể cần phải chạy

Python build finished successfully!
The necessary bits to build these optional modules were not found:
_bz2                  _dbm                  _gdbm
_lzma                 _sqlite3              _ssl
_tkinter              _uuid                 readline
zlib
To find the necessary bits, look in setup.py in detect_modules()
for the module's name.
0 trước hoặc sau khi chạy lại
$ ./configure --with-pydebug
9 trong một thư mục xây dựng cụ thể.

Sau khi hoàn thành

$ ./configure --with-pydebug
9, bạn có thể biên dịch CPython với:

Điều này sẽ xây dựng Cpython chỉ với các cảnh báo và lỗi được in cho Stderr và sử dụng tối đa 2 lõi CPU. Nếu bạn đang sử dụng một máy đa lõi với hơn 2 lõi (hoặc máy lõi đơn), bạn có thể điều chỉnh số được chuyển vào cờ

Python build finished successfully!
The necessary bits to build these optional modules were not found:
_bz2                  _dbm                  _gdbm
_lzma                 _sqlite3              _ssl
_tkinter              _uuid                 readline
zlib
To find the necessary bits, look in setup.py in detect_modules()
for the module's name.
3 để phù hợp với số lượng lõi bạn có (hoặc nếu phiên bản của bạn tạo ra hỗ trợ nó , bạn có thể sử dụng
Python build finished successfully!
The necessary bits to build these optional modules were not found:
_bz2                  _dbm                  _gdbm
_lzma                 _sqlite3              _ssl
_tkinter              _uuid                 readline
zlib
To find the necessary bits, look in setup.py in detect_modules()
for the module's name.
3 mà không có số và thực hiện sẽ không giới hạn số bước có thể chạy đồng thời.).

Vào cuối bản dựng, bạn sẽ thấy một thông điệp thành công, có thể theo sau là danh sách các mô -đun mở rộng mà thiên đường đã được xây dựng vì sự phụ thuộc của chúng bị thiếu:

Python build finished successfully!
The necessary bits to build these optional modules were not found:
_bz2                  _dbm                  _gdbm
_lzma                 _sqlite3              _ssl
_tkinter              _uuid                 readline
zlib
To find the necessary bits, look in setup.py in detect_modules()
for the module's name.

Nếu bản dựng không thành công và bạn đang sử dụng trình biên dịch tuân thủ C89 hoặc C99, vui lòng mở báo cáo lỗi về trình theo dõi vấn đề.

Nếu bạn quyết định cài đặt các phụ thuộc, bạn sẽ cần chạy lại cả

$ ./configure --with-pydebug
9 và
Python build finished successfully!
The necessary bits to build these optional modules were not found:
_bz2                  _dbm                  _gdbm
_lzma                 _sqlite3              _ssl
_tkinter              _uuid                 readline
zlib
To find the necessary bits, look in setup.py in detect_modules()
for the module's name.
6.Install dependencies, you will need to re-run both
$ ./configure --with-pydebug
9 and
Python build finished successfully!
The necessary bits to build these optional modules were not found:
_bz2                  _dbm                  _gdbm
_lzma                 _sqlite3              _ssl
_tkinter              _uuid                 readline
zlib
To find the necessary bits, look in setup.py in detect_modules()
for the module's name.
6.

Khi CPython hoàn thành xây dựng, bạn sẽ có một bản dựng hoạt động có thể được chạy tại chỗ;

Python build finished successfully!
The necessary bits to build these optional modules were not found:
_bz2                  _dbm                  _gdbm
_lzma                 _sqlite3              _ssl
_tkinter              _uuid                 readline
zlib
To find the necessary bits, look in setup.py in detect_modules()
for the module's name.
7 Trên hầu hết các máy (và những gì được sử dụng trong tất cả các ví dụ),
Python build finished successfully!
The necessary bits to build these optional modules were not found:
_bz2                  _dbm                  _gdbm
_lzma                 _sqlite3              _ssl
_tkinter              _uuid                 readline
zlib
To find the necessary bits, look in setup.py in detect_modules()
for the module's name.
8 Bất cứ nơi nào một hệ thống tập tin không nhạy cảm trường hợp được sử dụng (ví dụ: trên OS X theo mặc định), để tránh xung đột với thư mục
Python build finished successfully!
The necessary bits to build these optional modules were not found:
_bz2                  _dbm                  _gdbm
_lzma                 _sqlite3              _ssl
_tkinter              _uuid                 readline
zlib
To find the necessary bits, look in setup.py in detect_modules()
for the module's name.
9. Thông thường không cần phải cài đặt bản sao Python được xây dựng của bạn! Trình thông dịch sẽ nhận ra nơi nó đang được chạy và do đó sử dụng các tệp được tìm thấy trong bản sao làm việc. Nếu bạn lo lắng, bạn có thể vô tình cài đặt bản dựng bản sao làm việc của mình, bạn có thể thêm
PCbuild\build.bat -c Debug
0 vào bước cấu hình. Khi chạy từ thư mục làm việc của bạn, tốt nhất là tránh sử dụng cờ
PCbuild\build.bat -c Debug
1 đến
$ ./configure --with-pydebug
9; Trừ khi bạn rất cẩn thận, bạn có thể vô tình chạy với mã từ một thư viện Python được cài đặt cũ hơn thay vì từ trình thông dịch mà bạn vừa xây dựng.

Clang#

Nếu bạn đang sử dụng Clang để xây dựng Cpython, một số cờ bạn có thể muốn đặt để làm im lặng một số cảnh báo tiêu chuẩn đặc biệt thừa đối với CPython là

PCbuild\build.bat -c Debug
3. Bạn có thể đặt biến môi trường
PCbuild\build.bat -c Debug
4 của mình cho các cờ này khi chạy
$ ./configure --with-pydebug
9.

Nếu bạn đang sử dụng Clang với CCache, hãy tắt cảnh báo

PCbuild\build.bat -c Debug
6 ồn ào với cờ
PCbuild\build.bat -c Debug
7. Những cảnh báo này được gây ra bởi tiếng kêu không có đủ thông tin để phát hiện dấu ngoặc đơn bên ngoài trong các macro mở rộng là hợp lệ, bởi vì tiền xử lý được thực hiện riêng biệt bởi CCache.

Nếu bạn đang sử dụng LLVM 2.8, cũng sử dụng cờ

PCbuild\build.bat -c Debug
8 để xây dựng mô -đun
PCbuild\build.bat -c Debug
9 (không có cờ, phần còn lại của CPython vẫn sẽ được xây dựng đúng cách).

Windows#

Ghi chú

Nếu bạn đang sử dụng hệ thống con Windows cho Linux (WSL), hãy sao chép kho lưu trữ từ chương trình Windows Shell gốc như PowerShell hoặc dấu nhắc lệnh

PCbuild\amd64\python_d.exe
0 và sử dụng bản dựng git được nhắm mục tiêu cho Windows, ví dụ: Git cho Windows Tải xuống từ trang web Git chính thức. Nếu không, Visual Studio sẽ không thể tìm thấy tất cả các tệp dự án và sẽ thất bại trong bản dựng.clone the repository from a native Windows shell program like PowerShell or the
PCbuild\amd64\python_d.exe
0 command prompt, and use a build of Git targeted for Windows, e.g. the Git for Windows download from the official Git website. Otherwise, Visual Studio will not be able to find all the project’s files and will fail the build.

Đối với một bản tóm tắt các bước ngắn gọn về việc xây dựng Python trên Windows, bạn có thể đọc hướng dẫn của Victor Stinner.

Tất cả các phiên bản được hỗ trợ của Python có thể được xây dựng bằng Microsoft Visual Studio 2017 trở lên. Bạn có thể tải xuống và sử dụng bất kỳ phiên bản miễn phí hoặc trả phí của Visual Studio.

Khi cài đặt nó, chọn khối lượng công việc phát triển Python và thành phần công cụ phát triển gốc Python tùy chọn để có được tất cả các công cụ xây dựng cần thiết. Bạn có thể tìm thấy git cho windows trên tab thành phần riêng lẻ nếu bạn không cài đặt nó.Python development workload and the optional Python native development tools component to obtain all of the necessary build tools. You can find Git for Windows on the Individual components tab if you don’t already have it installed.

Ghi chú

Nếu bạn muốn xây dựng trình cài đặt MSI, hãy lưu ý rằng công cụ xây dựng cho họ có sự phụ thuộc vào phiên bản Microsoft .NET Framework 3.5 (có thể không được đưa vào các phiên bản gần đây của Windows, chẳng hạn như Windows 10). Nếu bạn đang xây dựng trên phiên bản Windows gần đây, hãy sử dụng bảng điều khiển () và đảm bảo rằng mục nhập .NET Framework 3.5 (bao gồm .NET 2.0 và 3.0) được bật..NET Framework 3.5 (includes .NET 2.0 and 3.0) is enabled.

Bản dựng đầu tiên của bạn nên sử dụng dòng lệnh để đảm bảo tải xuống mọi phụ thuộc bên ngoài:

PCbuild\build.bat -c Debug

Bản dựng dòng lệnh trên sử dụng đối số

PCbuild\amd64\python_d.exe
1 để xây dựng trong cấu hình
PCbuild\amd64\python_d.exe
2, cho phép kiểm tra và xác nhận hữu ích cho việc phát triển Python. Theo mặc định, nó được xây dựng trong cấu hình
PCbuild\amd64\python_d.exe
3 và cho nền tảng 64 bit
PCbuild\amd64\python_d.exe
4 thay vì 32 bit
PCbuild\amd64\python_d.exe
5; Sử dụng
PCbuild\amd64\python_d.exe
6 và
PCbuild\amd64\python_d.exe
7 để kiểm soát cấu hình xây dựng và nền tảng, tương ứng.

Sau khi bản dựng này thành công, bạn có thể mở giải pháp

PCbuild\amd64\python_d.exe
8 trong Visual Studio IDE để tiếp tục phát triển, nếu bạn thích. Khi xây dựng trong Visual Studio, hãy đảm bảo chọn các cài đặt xây dựng phù hợp với những gì bạn đã sử dụng với tập lệnh (cấu hình gỡ lỗi và nền tảng X64) từ các menu thả xuống trên thanh công cụ.Debug configuration and the x64 platform) from the dropdown menus in the toolbar.

Ghi chú

Nếu bạn cần thay đổi cấu hình xây dựng hoặc nền tảng, hãy xây dựng một lần với tập lệnh

PCbuild\amd64\python_d.exe
9 được đặt thành các tùy chọn đó trước khi xây dựng với chúng trong VS để đảm bảo tất cả các tệp được xây dựng lại đúng cách hoặc bạn có thể gây ra lỗi khi tải các mô -đun không được xây dựng lại.

Tránh chọn cấu hình

$ sudo yum install yum-utils
$ sudo yum-builddep python3
0 và
$ sudo yum install yum-utils
$ sudo yum-builddep python3
1, vì chúng được dành cho các bản dựng PGO và không phát triển bình thường.

Bạn có thể chạy bản dựng của Python mà bạn đã biên dịch với:

PCbuild\amd64\python_d.exe

Xem PCBuild Readme để biết thêm chi tiết về những phần mềm khác là cần thiết và cách xây dựng.

Cài đặt phụ thuộc#

Phần này giải thích cách cài đặt các tiện ích mở rộng bổ sung (ví dụ:

$ ./configure --with-pydebug
8) trên Linux và MacOS/OS X. Trên Windows, các tiện ích mở rộng đã được bao gồm và xây dựng tự động.Linux and macOs/OS X. On Windows, extensions are already included and built automatically.

Linux#

Đối với các hệ thống dựa trên UNIX, chúng tôi cố gắng sử dụng các thư viện hệ thống bất cứ khi nào có sẵn. Điều này có nghĩa là các thành phần tùy chọn sẽ chỉ xây dựng nếu các tiêu đề hệ thống có liên quan có sẵn. Cách tốt nhất để có được các tiêu đề thích hợp sẽ thay đổi theo phân phối, nhưng các lệnh thích hợp cho một số phân phối phổ biến là bên dưới.

Trên Fedora, Red Hat Enterprise Linux và các hệ thống dựa trên

$ sudo yum install yum-utils
$ sudo yum-builddep python3
3 khác:Fedora, Red Hat Enterprise Linux and other
$ sudo yum install yum-utils
$ sudo yum-builddep python3
3 based systems:

$ sudo yum install yum-utils
$ sudo yum-builddep python3

Trên Fedora và các hệ thống dựa trên

$ sudo yum install yum-utils
$ sudo yum-builddep python3
4 khác:Fedora and other
$ sudo yum install yum-utils
$ sudo yum-builddep python3
4 based systems:

$ sudo dnf install dnf-plugins-core  # install this to use 'dnf builddep'
$ sudo dnf builddep python3

Trên các hệ thống dựa trên Debian, Ubuntu và các hệ thống dựa trên ____75 khác, hãy cố gắng có được sự phụ thuộc cho Python mà bạn đang làm việc bằng cách sử dụng lệnh

$ sudo yum install yum-utils
$ sudo yum-builddep python3
5.Debian, Ubuntu, and other
$ sudo yum install yum-utils
$ sudo yum-builddep python3
5 based systems, try to get the dependencies for the Python you’re working on by using the
$ sudo yum install yum-utils
$ sudo yum-builddep python3
5 command.

Đầu tiên, hãy chắc chắn rằng bạn đã kích hoạt các gói nguồn trong danh sách nguồn. Bạn có thể làm điều này bằng cách thêm vị trí của các gói nguồn, bao gồm URL, tên phân phối và tên thành phần, vào

$ sudo yum install yum-utils
$ sudo yum-builddep python3
7. Lấy Ubuntu 22.04 LTS (ví dụ về Jammy Sứa):

deb-src http://archive.ubuntu.com/ubuntu/ jammy main

Ngoài ra, các dòng Uncomment với

$ sudo yum install yum-utils
$ sudo yum-builddep python3
8 bằng trình soạn thảo, ví dụ:

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
0

Đối với các phân phối khác, như Debian, thay đổi URL và tên để tương ứng với phân phối cụ thể.

Sau đó, bạn nên cập nhật chỉ mục gói:

Bây giờ bạn có thể cài đặt các phụ thuộc xây dựng thông qua

$ sudo yum install yum-utils
$ sudo yum-builddep python3
5:

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
1

Nếu bạn muốn xây dựng tất cả các mô -đun tùy chọn, hãy cài đặt các gói sau và phụ thuộc của chúng:

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
2

MacOS và OS X#

Đối với các hệ thống MacOS (phiên bản 10.12+) và OS X 10.9 trở lên, các công cụ phát triển có thể được tải xuống và cài đặt tự động; Bạn không cần phải tải xuống ứng dụng Xcode hoàn chỉnh.macOS systems (versions 10.12+) and OS X 10.9 and later, the Developer Tools can be downloaded and installed automatically; you do not need to download the complete Xcode application.

Nếu cần thiết, hãy chạy như sau:

Điều này cũng sẽ đảm bảo rằng các tệp tiêu đề hệ thống được cài đặt vào

$ sudo dnf install dnf-plugins-core  # install this to use 'dnf builddep'
$ sudo dnf builddep python3
0.

Trên Mac OS X Systems (phiên bản 10.0 - 10.7) và OS X 10.8, sử dụng trình biên dịch C và các tiện ích phát triển khác được cung cấp bởi các công cụ dành cho nhà phát triển Apple Apple Xcode. Các công cụ của nhà phát triển không được vận chuyển với Mac OS X.Mac OS X systems (versions 10.0 - 10.7) and OS X 10.8, use the C compiler and other development utilities provided by Apple’s Xcode Developer Tools. The Developer Tools are not shipped with Mac OS X.

Đối với các bản phát hành cũ hơn này (phiên bản 10.0 - 10.8), bạn sẽ cần tải xuống đúng phiên bản của các công cụ dòng lệnh, nếu có hoặc cài đặt chúng từ ứng dụng Xcode đầy đủ hoặc gói cho bản phát hành OS X đó. Các phiên bản cũ hơn có thể có sẵn dưới dạng tải xuống miễn phí thông qua Apple App Store hoặc từ trang web của nhà phát triển Apple.older releases (versions 10.0 - 10.8), you will need to download either the correct version of the Command Line Tools, if available, or install them from the full Xcode app or package for that OS X release. Older versions may be available either as a no-cost download through Apple’s App Store or from the Apple Developer web site.

Cũng lưu ý rằng OS X không bao gồm một số thư viện được sử dụng bởi Thư viện tiêu chuẩn Python, bao gồm

$ sudo dnf install dnf-plugins-core  # install this to use 'dnf builddep'
$ sudo dnf builddep python3
1, vì vậy, dự kiến ​​sẽ thấy một số lỗi xây dựng mô -đun mở rộng trừ khi bạn cài đặt các bản sao cục bộ của chúng. Kể từ OS X 10.11, Apple không còn cung cấp các tệp tiêu đề cho phiên bản hệ thống không dùng nữa của OpenSSL, điều đó có nghĩa là bạn sẽ không thể xây dựng tiện ích mở rộng
$ sudo dnf install dnf-plugins-core  # install this to use 'dnf builddep'
$ sudo dnf builddep python3
2. Một giải pháp là cài đặt các thư viện này từ Trình quản lý gói của bên thứ ba, như Homebrew hoặc MacPorts, sau đó thêm các đường dẫn thích hợp cho các tệp tiêu đề và thư viện vào lệnh
$ ./configure --with-pydebug
9 của bạn. Ví dụ,

với homebrew:Homebrew:

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
3

Cho Python 3.10 và mới hơn:

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
4

Đối với các phiên bản Python 3.9 đến 3.7:

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
5

Python build finished successfully!
The necessary bits to build these optional modules were not found:
_bz2                  _dbm                  _gdbm
_lzma                 _sqlite3              _ssl
_tkinter              _uuid                 readline
zlib
To find the necessary bits, look in setup.py in detect_modules()
for the module's name.
6:

hoặc macports:MacPorts:

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
6

$ ./configure --with-pydebug
9:

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
7

Python build finished successfully!
The necessary bits to build these optional modules were not found:
_bz2                  _dbm                  _gdbm
_lzma                 _sqlite3              _ssl
_tkinter              _uuid                 readline
zlib
To find the necessary bits, look in setup.py in detect_modules()
for the module's name.
6:

hoặc macports:

$ ./configure --with-pydebug
9:

Đôi khi sẽ có các mô -đun tùy chọn được thêm vào cho một bản phát hành mới mà won chưa được xác định trong các phụ thuộc xây dựng cấp hệ điều hành. Trong những trường hợp đó, chỉ cần yêu cầu hỗ trợ trong danh sách lõi.

Ghi chú

Giải thích cách xây dựng các phụ thuộc tùy chọn vào một hệ thống dựa trên UNIX mà không có quyền truy cập root nằm ngoài phạm vi của hướng dẫn này.

Để biết thêm chi tiết về các tùy chọn và cân nhắc khác nhau để xây dựng, hãy tham khảo MacOS Readme.

Mặc dù bạn cần một trình biên dịch C để xây dựng Cpython, bạn không cần bất kỳ kiến ​​thức nào về ngôn ngữ C để đóng góp! Các khu vực rộng lớn của Cpython được viết hoàn toàn bằng Python: Khi viết bài này, Cpython chứa mã Python hơi hơn một chút so với C.

Tập lệnh Python từ ____39 được tạo từ

deb-src http://archive.ubuntu.com/ubuntu/ jammy main
0 bằng AutoConf. Thay vì chỉnh sửa
$ ./configure --with-pydebug
9, chỉnh sửa
deb-src http://archive.ubuntu.com/ubuntu/ jammy main
0 và sau đó chạy
deb-src http://archive.ubuntu.com/ubuntu/ jammy main
3 để tái tạo
$ ./configure --with-pydebug
9 và một số tệp khác (chẳng hạn như
deb-src http://archive.ubuntu.com/ubuntu/ jammy main
5).

Khi gửi một bản vá với các thay đổi được thực hiện cho

deb-src http://archive.ubuntu.com/ubuntu/ jammy main
0, bạn cũng nên bao gồm các tệp được tạo.

Lưu ý rằng chạy

deb-src http://archive.ubuntu.com/ubuntu/ jammy main
3 không giống như chạy
deb-src http://archive.ubuntu.com/ubuntu/ jammy main
8. Ví dụ,
deb-src http://archive.ubuntu.com/ubuntu/ jammy main
8 tự nó sẽ không tái tạo
$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
00.
deb-src http://archive.ubuntu.com/ubuntu/ jammy main
3 chạy
deb-src http://archive.ubuntu.com/ubuntu/ jammy main
8 và một số công cụ khác nhiều lần là phù hợp.

Tập lệnh Python từ ____990 thường yêu cầu một phiên bản AutoCONF cụ thể. Hiện tại, điều này có nội dung:

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
04. Nó cũng yêu cầu phải có các tiện ích
$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
05 và
$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
06 được cài đặt trong hệ thống và tệp macro
$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
07 nằm ở vị trí ____108 thích hợp. Bạn có thể dễ dàng kiểm tra xem điều này có được cấu hình chính xác bằng cách chạy không:

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
8

Nếu bản sao hệ thống của AutoConf không khớp với phiên bản này, bạn sẽ cần cài đặt bản sao AutoConf của riêng mình.

Tái tạo bãi rác abi#

Các nhánh bảo trì (không phải

$ git remote -v
origin  :/cpython.git (fetch)
origin  :/cpython.git (push)
upstream        https://github.com/python/cpython (fetch)
upstream        :/cpython.git (push)
$ git config branch.main.remote
upstream
9) có một tệp đặc biệt nằm trong
$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
10 cho phép chúng tôi biết liệu một yêu cầu kéo nhất định có ảnh hưởng đến ABI công khai hay không. Tệp này được sử dụng bởi GitHub CI trong một kiểm tra có tên
$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
11 sẽ thất bại nếu một yêu cầu kéo nhất định có thay đổi đối với ABI và tệp ABI không được cập nhật.

Kiểm tra này hoạt động như một sự không an toàn và không nhất thiết có nghĩa là yêu cầu kéo không thể được hợp nhất. Khi kiểm tra này không thành công, bạn nên thêm trình quản lý phát hành có liên quan vào PR để họ nhận thức được sự thay đổi và họ có thể xác nhận nếu thay đổi có thể được thực hiện hay không.doesn’t necessarily mean that the Pull Request cannot be merged. When this check fails you should add the relevant release manager to the PR so that they are aware of the change and they can validate if the change can be made or not.

Quan trọng

Thay đổi ABI được cho phép trước khi ứng cử viên phát hành đầu tiên. Sau khi ứng cử viên phát hành đầu tiên, tất cả các bản phát hành tiếp theo phải có cùng ABI để đảm bảo khả năng tương thích với các tiện ích mở rộng gốc và các công cụ khác tương tác với trình thông dịch Python. Xem tài liệu về giai đoạn ứng cử viên phát hành.release candidate phase.

Bạn có thể tự mình tái tạo tệp ABI bằng cách gọi mục tiêu

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
12. Lưu ý rằng để thực hiện điều này, bạn cần phải tái tạo tệp ABI trong cùng một môi trường mà GitHub CI sử dụng để kiểm tra nó. Điều này là do các nền tảng khác nhau có thể bao gồm một số chi tiết dành riêng cho nền tảng làm cho việc kiểm tra thất bại ngay cả khi Python ABI là như nhau. Cách dễ dàng hơn để tái tạo tệp ABI bằng cách sử dụng cùng một nền tảng với CI sử dụng là sử dụng Docker:

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
9

Lưu ý rằng phiên bản

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
13 được sử dụng để thực thi các vấn đề tập lệnh và phải khớp với phiên bản được CI sử dụng để kiểm tra ABI. Xem tệp
$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
14 để biết thêm thông tin.must match the version used by the CI to check the ABI. See the
$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
14 file for more information.

Khắc phục sự cố xây dựng#

Phần này liệt kê một số vấn đề phổ biến có thể phát sinh trong quá trình tổng hợp Python, với các giải pháp được đề xuất.

Tránh tái tạo các tệp được tạo tự động#

Trong một số trường hợp, bạn có thể gặp lỗi Python trong các tập lệnh như

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
15 hoặc
$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
16 trong khi chạy
Python build finished successfully!
The necessary bits to build these optional modules were not found:
_bz2                  _dbm                  _gdbm
_lzma                 _sqlite3              _ssl
_tkinter              _uuid                 readline
zlib
To find the necessary bits, look in setup.py in detect_modules()
for the module's name.
6. Python tự động tạo một số mã của riêng mình và xây dựng đầy đủ từ đầu cần để chạy các tập lệnh tự động tạo. Tuy nhiên, điều này làm cho bản dựng Python yêu cầu một trình thông dịch Python đã được cài đặt; Điều này cũng có thể gây ra sự không phù hợp phiên bản khi cố gắng xây dựng một con trăn cũ (2.x) với một python mới (3.x) được cài đặt hoặc ngược lại.

Để khắc phục vấn đề này, các tệp được tạo tự động cũng được kiểm tra vào kho Git. Vì vậy, nếu bạn không chạm vào các tập lệnh tự động tạo ra, thì không có nhu cầu thực sự nào để tự động tạo ra bất cứ điều gì.

Biên tập viên và công cụ#

Python được sử dụng đủ rộng để thực tế tất cả các trình chỉnh sửa mã có một số hình thức hỗ trợ để viết mã Python. Các công cụ mã hóa khác nhau cũng bao gồm hỗ trợ Python.

Đối với các biên tập viên và công cụ mà các nhà phát triển cốt lõi đã cảm thấy một số nhận xét đặc biệt là cần thiết để mã hóa trong Python, hãy xem các tài nguyên bổ sung.Additional Resources.

Cấu trúc thư mục#

Có một số thư mục cấp cao nhất trong cây nguồn Cpython. Biết những gì mỗi người có nghĩa là để giữ sẽ giúp bạn tìm thấy nơi một phần chức năng nhất định được thực hiện. Mặc dù vậy, luôn luôn có những ngoại lệ cho mọi quy tắc.

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
18

Các tài liệu chính thức. Đây là những gì https://docs.python.org/ sử dụng. Xem thêm Xây dựng tài liệu.Building the documentation.

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
19

Chứa tệp ngữ pháp EBNF cho Python.

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
20

Chứa tất cả các tệp tiêu đề toàn phiên dịch.

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
21

Một phần của thư viện tiêu chuẩn được thực hiện trong Python thuần túy.

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
22

Mã dành riêng cho MAC (ví dụ: sử dụng IDLE làm ứng dụng OS X).

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
23

Những thứ không thuộc về nơi khác. Thông thường đây là các loại tài liệu dành riêng cho nhà phát triển.

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
24

Phần của thư viện tiêu chuẩn (cộng với một số mã khác) được triển khai trong C.

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
25

Mã cho tất cả các loại tích hợp.

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
26

Mã cụ thể của Windows.

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
27

Xây dựng các tệp cho phiên bản MSVC hiện đang được sử dụng cho các trình cài đặt Windows được cung cấp trên python.org.

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
28

Mã liên quan đến trình phân tích cú pháp.Định nghĩa của các nút AST cũng được giữ ở đây.

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
29

Mã nguồn cho C Executables, bao gồm chức năng chính cho trình thông dịch CPYThon (trong các phiên bản trước Python 3.5, các tệp này nằm trong thư mục mô -đun).

Python build finished successfully!
The necessary bits to build these optional modules were not found:
_bz2                  _dbm                  _gdbm
_lzma                 _sqlite3              _ssl
_tkinter              _uuid                 readline
zlib
To find the necessary bits, look in setup.py in detect_modules()
for the module's name.
9

Mã tạo nên thời gian chạy Cpython cốt lõi.Điều này bao gồm trình biên dịch, vòng lặp EVAL và các mô-đun tích hợp khác nhau.

$ cd cpython
$ git remote add upstream https://github.com/python/cpython
$ git config --local branch.main.remote upstream
$ git remote set-url --push upstream :/cpython.git
31

Các công cụ khác nhau (hoặc đã được) được sử dụng để duy trì Python.