All Products
Search
Document Center

MaxCompute:Hasilkan paket pihak ketiga untuk PyODPS

Last Updated:Jun 19, 2025

Alat pyodps-pack antarmuka baris perintah (CLI) tersedia di PyODPS V0.11.3 dan versi lebih baru. Alat ini digunakan untuk menghasilkan paket pihak ketiga yang sesuai dengan standar PyODPS dan node PyODPS DataWorks. Metode operasinya mirip dengan perintah pip. Anda dapat menggunakan alat ini untuk menghasilkan file .tar.gz yang berisi semua dependensi proyek, termasuk dependensi yang dikompilasi dan dikemas dalam MaxCompute atau DataWorks. Alat ini juga mendukung pengemasan kode Python kustom dalam proyek Anda.

Siapkan lingkungan

pyodps-pack terinstal secara otomatis saat Anda menginstal PyODPS dan berada di direktori bin untuk Linux dan macOS atau direktori Scripts untuk Windows di bawah jalur instalasi Python. Tidak diperlukan instalasi terpisah untuk pyodps-pack.

Anda dapat menjalankan perintah pyodps-pack di CLI Windows, macOS, atau Shell Linux. Namun, perintah ini tidak dapat dijalankan di konsol DataWorks, pada klien MaxCompute (odpscmd), atau CLI Python.

Jika direktori bin atau Scripts sudah termasuk dalam variabel lingkungan PATH, yang dikonfigurasi selama instalasi Python atau aktivasi lingkungan virtual Python, tidak ada langkah tambahan yang diperlukan. Jika belum termasuk, Anda harus menavigasi ke direktori tersebut secara manual atau memodifikasi variabel lingkungan PATH.

Mode Docker

Untuk menjalankan alat pyodps-pack dalam mode Docker, Anda harus menginstal Docker. Alat pyodps-pack dapat secara otomatis memanggil Docker yang telah diinstal serta mengunduh gambar yang diperlukan. Oleh karena itu, Anda tidak perlu mengunduh gambar secara manual atau menjalankan perintah Docker.

null

Perintah pyodps-pack hanya dapat dijalankan dalam mode Docker. Jika dijalankan dalam mode non-Docker, kesalahan akan dilaporkan.

  • Sistem operasi Linux: Untuk informasi lebih lanjut tentang cara menginstal Docker di Linux, lihat Instal Docker Engine.

  • Sistem operasi macOS atau Windows:

    • Pengembang individu dapat menggunakan Docker Desktop.

    • Pengguna perusahaan tanpa lisensi disarankan menggunakan Rancher Desktop, solusi sumber terbuka.

null

Alat pyodps-pack tidak diuji dalam lingkungan Docker lainnya seperti minikube. Ketersediaannya dalam lingkungan tersebut tidak dapat dijamin.

Jika Anda menggunakan sistem operasi Windows, layanan Docker mungkin memerlukan Windows Server untuk dimulai. Namun, banyak perusahaan menonaktifkan Windows Server karena masalah keamanan. Jika terjadi masalah, gunakan sistem operasi Linux sebagai alternatif atau coba aktifkan Windows Server. Jika menggunakan Rancher Desktop, containerd mungkin tidak kompatibel sebagai mesin kontainer di Windows 10. Sebagai gantinya, Anda dapat mencoba menggunakan dockerd. Untuk informasi lebih lanjut tentang konfigurasi mesin kontainer, lihat Mesin Kontainer.

Mode Non-Docker

null

Jika lingkungan Anda mendukung Docker, disarankan untuk mengemas semua dependensi PyODPS, kode, dan repositori Git dalam mode Docker. Mode non-Docker hanya direkomendasikan jika lingkungan Anda tidak mendukung Docker. Paket yang dihasilkan dalam mode non-Docker mungkin tidak tersedia.

Jika Anda mengalami kesulitan menginstal Docker, Anda dapat mencoba mode non-Docker dengan menambahkan parameter --without-docker. Sebelum menggunakan mode ini, pastikan pip sudah terinstal di lingkungan Python Anda. Jika terjadi kesalahan atau paket yang dihasilkan tidak dapat digunakan saat menjalankan perintah pyodps-pack dalam mode non-Docker, gunakan mode Docker sebagai alternatif. Pengguna Windows yang ingin menggunakan mode non-Docker perlu menginstal Git Bash, yang tersedia di Git for Windows.

Hasilkan paket

Batasan

  • Disarankan untuk menghasilkan paket di Python 3 untuk proyek baru di MaxCompute. Operasi pengemasan mungkin gagal jika menggunakan Python 2.

  • Untuk proyek yang ada, migrasikan proyek ke Python 3 untuk menyederhanakan pemeliharaan di masa mendatang.

  • Di sistem operasi Linux, gunakan sudo untuk memanggil alat pyodps-pack agar memastikan operasi normal Docker.

  • Hindari menggunakan sudo untuk memanggil alat pyodps-pack di macOS untuk menghindari kemungkinan kesalahan izin.

Kemas semua dependensi

null

Beberapa paket Python memiliki dependensi opsional. Misalnya, pandas bergantung pada openpyxl saat menggunakan metode to_excel. pyodps-pack tidak dapat secara otomatis menyertakan dependensi opsional. Anda harus menambahkan dependensi ini secara manual ke perintah pengemasan berdasarkan dokumentasi paket pihak ketiga.

Setelah menginstal PyODPS, jalankan perintah berikut untuk mengemas pandas dan dependensinya untuk Python 3 di CLI lokal:

  • Kemas semua dependensi dalam mode Docker.

    pyodps-pack pandas
  • Kemas semua dependensi dalam mode non-Docker.

    pyodps-pack --without-docker pandas
  • Tentukan versi pandas untuk dependensi pengemasan.

    pyodps-pack pandas==1.2.5

Setelah operasi pengemasan selesai, versi semua paket dependensi ditampilkan oleh alat pyodps-pack. File packages.tar.gz dihasilkan di direktori saat ini dan berisi paket dependensi berikut:

Package         Version
--------------- -------
numpy           1.21.6
pandas          1.2.5
python-dateutil 2.8.2
pytz            2022.6
six             1.16.0

Jika Anda ingin menghasilkan paket di Python 2.7, pastikan paket tersebut digunakan di MaxCompute atau DataWorks. Untuk informasi lebih lanjut, lihat PyODPS DataFrame.

  • Untuk menggunakan paket yang dihasilkan di MaxCompute, jalankan perintah berikut:

    pyodps-pack --mcpy27 pandas
  • Untuk menggunakan paket yang dihasilkan di DataWorks, jalankan perintah berikut:

    pyodps-pack --dwpy27 pandas

Kemas kode kustom

Gunakan alat pyodps-pack untuk mengemas proyek Python kustom berdasarkan file setup.py atau pyproject.toml. Untuk informasi lebih lanjut, lihat Antarmuka Sistem Pembangunan.

Contoh berikut menunjukkan penggunaan alat pyodps-pack untuk mengemas proyek berdasarkan file pyproject.toml. Proyek tersebut menggunakan struktur direktori berikut:

test_package_root
├── test_package
│   ├── __init__.py
│   ├── mod1.py
│   └── subpackage
│       ├── __init__.py
│       └── mod2.py
└── pyproject.toml 

File pyproject.toml mungkin berisi data berikut:

[project]
name = "test_package"
description = "pyodps-pack example package"
version = "0.1.0"
dependencies = [
    "pandas>=1.0.5"
]

Setelah paket dihasilkan, jalankan perintah berikut untuk menekan paket dan semua dependensi ke dalam file packages.tar.gz. Ganti path_to_package dengan direktori tingkat atas dari test_package_root.

pyodps-pack /<path_to_package>/test_package_root

Kemas kode dalam repositori Git

Gunakan alat pyodps-pack untuk mengemas kode dalam repositori Git seperti GitHub. Contohnya, jalankan perintah berikut untuk mengemas kode PyODPS:

pyodps-pack git+https://github.com/aliyun/aliyun-odps-python-sdk.git

Untuk mengemas cabang atau tag tertentu, jalankan perintah berikut:

pyodps-pack git+https://github.com/aliyun/aliyun-odps-python-sdk.git@v0.11.2.2

Untuk mengemas kode, Anda mungkin perlu menginstal dependensi yang diperlukan, seperti Cython. Gunakan parameter --install-requires untuk menentukan dependensi yang diperlukan. Anda juga dapat membuat file bernama install-requires.txt dengan format yang sama dengan file dan gunakan parameter --install-requires-file untuk menentukan file tersebut. Contohnya, jika Anda perlu menginstal Cython sebelum mengemas kode PyODPS, jalankan perintah berikut:

pyodps-pack \
    --install-requires cython \
    git+https://github.com/aliyun/aliyun-odps-python-sdk.git@v0.11.2.2

Anda juga dapat menjalankan perintah berikut untuk membuat file bernama install-requires.txt dan menulis kontennya dalam format file requirements.txt. Berikut adalah contoh isi file:

cython>0.29

Contoh perintah pengemasan:

pyodps-pack \
    --install-requires-file install-requires.txt \
    git+https://github.com/aliyun/aliyun-odps-python-sdk.git@v0.11.2.2

Kemas dependensi biner

Beberapa paket berisi dependensi biner tambahan, seperti pustaka tautan dinamis yang perlu dikompilasi atau diinstal. Alat pyodps-pack menyediakan parameter --run-before untuk menentukan langkah yang perlu dilakukan sebelum operasi pengemasan. Contohnya, berikut adalah cara mengemas Pustaka Abstraksi Data Geospasial (GDAL).

  1. Tentukan dependensi biner yang perlu diinstal selama pengemasan.

    Instal libgdal versi 3.6.0 atau lebih baru berdasarkan dokumentasi GDAL di PyPI. Seperti disebutkan dalam instruksi kompilasi libgdal, paket tersebut memerlukan PROJ versi 6.0 atau lebih baru. Tulis skrip untuk kompilasi dependensi biner ini dan simpan sebagai install-gdal.sh.

    #!/bin/bash
    set -e
    
    cd /tmp
    curl -o proj-6.3.2.tar.gz https://download.osgeo.org/proj/proj-6.3.2.tar.gz
    tar xzf proj-6.3.2.tar.gz
    cd proj-6.3.2
    mkdir build && cd build
    cmake ..
    cmake --build .
    cmake --build . --target install
    
    cd /tmp
    curl -o gdal-3.6.0.tar.gz http://download.osgeo.org/gdal/3.6.0/gdal-3.6.0.tar.gz
    tar xzf gdal-3.6.0.tar.gz
    cd gdal-3.6.0
    mkdir build && cd build
    cmake ..
    cmake --build .
    cmake --build . --target install
  2. Jalankan perintah berikut untuk menghasilkan paket menggunakan alat pyodps-pack:

    pyodps-pack --install-requires oldest-supported-numpy --run-before install-gdal.sh gdal==3.6.0

Parameter

Tabel berikut menjelaskan parameter yang tersedia untuk perintah pyodps-pack. Parameter ini digunakan untuk mengontrol proses pengemasan.

Parameter

Deskripsi

-r, --requirement <file>

File dependensi yang diperlukan untuk pengemasan. Anda dapat menentukan parameter beberapa kali.

-o, --output <file>

Nama paket yang ingin Anda hasilkan. Nilai default: packages.tar.gz.

--install-requires <item>

Dependensi PyPI yang diperlukan untuk pengemasan. Anda dapat menentukan beberapa dependensi PyPI. Parameter ini digunakan di CLI. File dependensi ini tidak harus disertakan dalam paket yang dihasilkan.

--install-requires-file <file>

File dependensi PyPI yang diperlukan untuk pengemasan. Anda dapat menentukan beberapa file. File dependensi ini tidak harus disertakan dalam paket yang dihasilkan.

--run-before <script-file>

Skrip Bash yang perlu Anda jalankan sebelum pengemasan. Dalam kebanyakan kasus, skrip Bash digunakan untuk menginstal dependensi biner.

-x, --exclude <dependency>

Dependensi PyPI yang perlu dikecualikan dari paket yang dihasilkan. Anda dapat menentukan parameter beberapa kali.

--no-deps

Proyek tertentu yang dependensinya tidak disertakan dalam paket yang dihasilkan.

-i, --index-url <index-url>

URL PyPI yang diperlukan untuk pengemasan. Secara default, nilai global.index-url dalam output perintah pip config list digunakan. Nilai global.index-url dikonfigurasikan dalam file konfigurasi pip.conf.

--trusted-host <host>

Nama domain HTTPS yang masalah sertifikatnya perlu diabaikan selama pengemasan.

-l, --legacy-image

Setelah Anda menentukan parameter, Anda dapat menggunakan gambar CentOS 5 untuk pengemasan. Dengan cara ini, paket yang dihasilkan dapat digunakan di lingkungan seperti Apsara Stack versi sebelumnya.

--mcpy27

Setelah Anda menentukan parameter ini, paket pihak ketiga dihasilkan untuk Python 2.7 di MaxCompute. Jika Anda menentukan parameter ini, gambar yang ditentukan oleh --legacy-image diaktifkan secara default untuk pengemasan.

--dwpy27

Setelah Anda menentukan parameter ini, paket pihak ketiga dihasilkan untuk Python 2.7 di DataWorks. Jika Anda menentukan parameter ini, gambar yang ditentukan oleh --legacy-image diaktifkan secara default untuk pengemasan.

--prefer-binary

Setelah Anda menentukan parameter ini, versi sebelumnya yang berisi dependensi biner di PyPI dipilih secara prioritas daripada versi baru yang hanya berisi paket kode sumber.

--docker-args <args>

Parameter tambahan yang diperlukan untuk menjalankan perintah Docker. Sertakan beberapa parameter dalam tanda kutip ganda ("), seperti --docker-args "--ip 192.168.1.10".

--without-docker

Jika Anda menentukan parameter ini, alat pyodps-pack dijalankan dalam mode non-Docker. Jika ada dependensi biner, kesalahan mungkin dilaporkan atau paket yang dihasilkan mungkin tidak tersedia.

--without-merge

Jika Anda menentukan parameter ini, file .tar.gz tidak dihasilkan setelah file .whl diunduh atau dibuat. Dalam hal ini, file .whl tetap disimpan.

--debug

Jika Anda menentukan parameter ini, detail eksekusi perintah dikembalikan. Anda dapat menggunakan informasi yang dikembalikan untuk pemecahan masalah.

Untuk informasi lebih lanjut tentang cara menggunakan paket pihak ketiga, lihat Referensikan paket pihak ketiga dalam node PyODPS.