Tüm Ürünler
Search
Belge Merkezi

MaxCompute:Generate a third-party package for PyODPS

Son Güncelleme:Oct 04, 2026

pyodps-pack aracı, PyODPS V0.11.3 ve sonraki sürümlerle birlikte gelen bir komut satırı arayüzü (CLI) uygulamasıdır. Bu araç; PyPI paketlerini, özel kodları, Git depolarını ve ikili bağımlılığı olan paketleri MaxCompute ile DataWorks PyODPS düğümlerinin doğrudan kullanabileceği bir .tar.gz arşivine dönüştürür. İşleyiş mantığı pip kullanımına benzer.

Ön koşullar

İşleme başlamadan önce aşağıdaki gereksinimleri karşıladığınızdan emin olun:

  • PyODPS V0.11.3 veya üzeri bir sürümün yüklü olması

  • Docker'ın kurulu ve çalışır durumda olması (varsayılan Docker modu için gereklidir)

  • Python 3'ün kurulu olması (önerilir; yeni projelerde Python 2 paketlemesi başarısız olabilir)

Paketleme senaryolarına genel bakış

Senaryonuz için uygun komutu bulmak amacıyla aşağıdaki tabloyu kullanın ve ardından alt bölümlerdeki ayrıntılı talimatları izleyin.


Senaryo


Komut


PyPI paketi paketleme (Docker modu)


pyodps-pack pandas


PyPI paketi paketleme (Docker olmayan mod)


pyodps-pack --without-docker pandas


Belirli bir sürümü paketleme


pyodps-pack pandas==1.2.5


MaxCompute için Python 2.7 paketi oluşturma


pyodps-pack --mcpy27 pandas


DataWorks için Python 2.7 paketi oluşturma


pyodps-pack --dwpy27 pandas


Özel yerel kodu paketleme


pyodps-pack /<path_to_package>/test_package_root


Git deposundan paketleme


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


İkili bağımlılıkları olan paketi oluşturma


pyodps-pack --run-before install-gdal.sh gdal==3.6.0

Çalışma mekanizması

pyodps-pack aracı, PyODPS ile birlikte otomatik olarak kurulur. Linux ve macOS işletim sistemlerinde çalıştırılabilir dosya, Python kurulum yolunun altındaki bin dizininde bulunur. Windows'ta ise Scripts dizinindedir. pyodps-pack komutlarını Windows CLI, macOS Terminal veya Linux Shell üzerinden çalıştırın; DataWorks konsolu, MaxCompute istemcisi (odpscmd) veya Python CLI üzerinden çalıştırmayın.

bin veya Scripts dizini, PATH ortam değişkeninizde zaten tanımlıysa (Python kurulumu veya sanal ortam etkinleştirme sırasında ayarlanmışsa) ek bir yapılandırmaya gerek yoktur. Aksi takdirde dizine manuel olarak gidin veya dizini PATH değişkenine ekleyin.

Paketleme işlemi tamamlandığında pyodps-pack aracı çözümlenen tüm bağımlılık sürümlerini ekrana yazdırır ve packages.tar.gz dosyasını geçerli dizine kaydeder.

Paketleme modunu seçme

pyodps-pack aracı iki farklı modu destekler:


Mod


Ne zaman kullanılır


Nasıl etkinleştirilir


Docker modu (varsayılan)


Docker'ın kullanılabilir olduğu tüm durumlar. En uyumlu paketleri üretir.


Docker'ı yükleyin; ek bir bayrak belirtmeye gerek yoktur


Docker olmayan mod


Yalnızca ortamınızda Docker kullanılamıyorsa


--without-docker parametresini ekleyin

Uyarı

Docker olmayan modda oluşturulan paketler MaxCompute veya DataWorks üzerinde çalışmayabilir. Mümkün olduğunca Docker modunu kullanın.

Docker kurulumu

pyodps-pack aracı Docker'ı otomatik olarak çağırır ve gerekli görüntüleri çeker; bu nedenle manuel görüntü yönetimi yapmanıza gerek yoktur.

Linux: Bkz. Docker Engine'i Yükleme.

macOS veya Windows:

  • Bireysel geliştiriciler: Docker Desktop ürününü kullanın.

  • Docker Desktop kullanamayan kurumsal kullanıcılar: Açık kaynaklı Rancher Desktop çözümünü kullanın.

Not

pyodps-pack aracı minikube gibi diğer Docker ortamlarında test edilmemiştir. Bu ortamlardaki kullanılabilirlik garanti edilmez.

Windows'a özel notlar:

  • Docker hizmetinin başlatılması için Windows Server gerekebilir ancak birçok kuruluş güvenlik nedenleriyle Windows Server'ı devre dışı bırakır. Docker başlatılamazsa Linux'a geçin veya Windows Server'ı etkinleştirmeyi deneyin.

  • Windows 10'da Rancher Desktop kullanırken containerd konteyner motoru olarak çalışmayabilir. Bunun yerine dockerd kullanın. Yapılandırma adımları için bkz. Container Engine.

Docker olmayan modun ayarlanması

Not

Docker olmayan modu yalnızca Docker kullanılamadığında kullanın. Hatalarla karşılaşırsanız veya oluşturulan paket çalışmazsa Docker moduna geçin.

Herhangi bir pyodps-pack komutuna --without-docker parametresini ekleyin. Bu modu kullanmadan önce:

  • Python ortamınızda pip aracının yüklü olduğundan emin olun.

  • Windows'ta Git Bash'i yükleyin (Git for Windows paketiyle birlikte gelir).

PyPI bağımlılıklarını paketleme

Not

Bazı paketler, pyodps-pack tarafından otomatik olarak dahil edilmeyen isteğe bağlı bağımlılıklara sahip olabilir. Örneğin, pandas paketi to_excel yöntemini kullandığınızda openpyxl gerektirir. Üçüncü taraf paket belgelerini kontrol edin ve varsa isteğe bağlı bağımlılıkları komuta açıkça ekleyin.

Kullanım notları:

  • Yeni MaxCompute projeleri için Python 3 kullanın. Python 2 ile paketleme başarısız olabilir.

  • Mevcut Python 2 projelerinizi bakımı kolaylaştırmak için Python 3'e taşıyın.

  • Linux'ta Docker'ın gerekli izinlere sahip olduğundan emin olmak için pyodps-pack komutlarının başına sudo ifadesini ekleyin.

  • macOS'ta sudo ile pyodps-pack kullanmayın; bu durum izin hatalarına neden olabilir.

Docker modu:

pyodps-pack pandas

Docker olmayan mod:

pyodps-pack --without-docker pandas

Belirli sürüm:

pyodps-pack pandas==1.2.5

Paketleme sonrasında pyodps-pack aracı, dahil edilen tüm paketlerin çözümlenmiş sürümlerini yazdırır:

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

Çıktı arşivi packages.tar.gz dosyası geçerli dizine kaydedilir.

Python 2.7 için paketleme

Python 2.7 paketine ihtiyacınız varsa kullanılacak komut, paketin nerede çalıştırılacağına bağlıdır. Bağlam için bkz. PyODPS DataFrame.

MaxCompute için:

pyodps-pack --mcpy27 pandas

DataWorks için:

pyodps-pack --dwpy27 pandas

Özel kodu paketleme

pyodps-pack aracı, setup.py veya pyproject.toml ile oluşturulmuş özel Python projelerini paketler. Ayrıntılar için bkz. Build System Interface.

Aşağıdaki örnek, şu dizin yapısına sahip pyproject.toml tabanlı bir projeyi paketler:

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

Örnek pyproject.toml dosyası:

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

test_package_root dizininin üst dizinini belirterek aşağıdaki komutu çalıştırın ve <path_to_package> değerini ilgili yolla değiştirin:

pyodps-pack /<path_to_package>/test_package_root

Bu işlem, projeyi ve tüm bağımlılıklarını packages.tar.gz dosyasında sıkıştırır.

Git deposundaki kodu paketleme

Git URL'sini doğrudan belirtin:

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

Belirli bir dalı veya etiketi paketlemek için:

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

Paketleme süreci Cython gibi derleme zamanı bağımlılıkları gerektiriyorsa bunları --install-requires parametresiyle belirtin. Bu bağımlılıklar paketleme sırasında kullanılır ancak çıktı arşivine mutlaka dahil edilmez.

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

Alternatif olarak, derleme zamanı bağımlılıklarını requirements.txt formatında bir dosyada listeleyin ve --install-requires-file parametresiyle dosyayı belirtin:

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

İkili bağımlılıkları paketleme

Bazı paketler, paketlemeden önce derlenmesi gereken dinamik bağlantı kitaplıkları gibi ikili bileşenler içerir. --run-before parametresini kullanarak pyodps-pack çalışmadan önce bu ikili bileşenleri yükleyen bir Bash betiği çalıştırın.

Aşağıdaki örnekte, CMake ile derlenen libgdal (sürüm > 3.6.0) ve PROJ (sürüm 6.0 veya üzeri) gerektiren GDAL 3.6.0 paketlenmektedir.

  1. PROJ ve GDAL'ı derleyip yükleyen install-gdal.sh adlı bir betik yazın:

    #!/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. Betik ve oldest-supported-numpy derleme bağımlılığı ile pyodps-pack komutunu çalıştırın:

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

Parametreler


Parametre


Açıklama


-r, --requirement <file>


Paketleme için gerekli bağımlılık dosyası. Birden çok kez belirtilebilir.


-o, --output <file>


Çıktı arşivinin adı. Varsayılan: packages.tar.gz.


--install-requires <item>


Paketleme sırasında gereken PyPI bağımlılığı (çıktı arşivine mutlaka dahil edilmez). Birden çok kez belirtilebilir.


--install-requires-file <file>


Paketleme sırasında gereken PyPI bağımlılıklarını requirements.txt formatında listeleyen dosya. Birden çok kez belirtilebilir.


--run-before <script-file>


Paketlemeden önce çalıştırılacak Bash betiği. Genellikle ikili bağımlılıkları yüklemek için kullanılır.


-x, --exclude <dependency>


Çıktı arşivinden hariç tutulacak PyPI bağımlılığı. Birden çok kez belirtilebilir.


--no-deps


Ardışık bağımlılıkları çıktı arşivinden hariç tutar.


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


PyPI dizin URL'si. Varsayılan olarak pip config list komutundan alınan global.index-url değeri kullanılır; bu değer pip.conf dosyasında yapılandırılır.


--trusted-host <host>


Paketleme sırasında sertifika hataları yok sayılacak HTTPS ana bilgisayar adı.


-l, --legacy-image


Paketleme için CentOS 5 görüntüsü kullanır. Apsara Stack'in önceki sürümleri gibi eski ortamlarla uyumluluğu sağlar.


--mcpy27


MaxCompute için Python 2.7 paketi oluşturur. Varsayılan olarak --legacy-image parametresini etkinleştirir.


--dwpy27


DataWorks için Python 2.7 paketi oluşturur. Varsayılan olarak --legacy-image parametresini etkinleştirir.


--prefer-binary


PyPI üzerinde yeni sürüm kaynak dağıtımları yerine eski sürüm ikili dağıtımları tercih eder.


--docker-args <args>


Docker'a geçirilecek ek bağımsız değişkenler. Birden çok bağımsız değişkeni çift tırnak içine alın, örneğin: --docker-args "--ip 192.168.1.10".


--without-docker


pyodps-pack aracını Docker olmayan modda çalıştırır. İkili bağımlılığı olan paketler başarısız olabilir veya kullanılamaz çıktılar üretebilir.


--without-merge


.whl dosyalarını .tar.gz arşivinde birleştirmek yerine ayrı tutar.


--debug


Sorun giderme amacıyla ayrıntılı komut yürütme çıktısını yazdırır.

Paketleme hatalarını giderme


Belirti


Olası neden


Çözüm


Docker olmayan modda oluşturulan paket MaxCompute veya DataWorks'te çalışmıyor


Docker olmayan mod, eşleşen işletim sistemi ortamını sağlamaz


Docker moduna geçin: --without-docker parametresini kaldırın


Windows'ta Docker başlatılamıyor


Kuruluşunuz Windows Server'ı devre dışı bırakmış


Linux'a geçin veya Windows Server'ı etkinleştirmeyi deneyin


Windows 10'da Rancher Desktop ile containerd hatası


Uyumsuz konteyner motoru


Rancher Desktop Container Engine ayarlarında dockerd motoruna geçin


Python 2 ile paketleme başarısız oluyor


Yeni paketler için Python 2 paketlemesi başarısız olabilir


Python 3 kullanın; Python 2.7 gerekiyorsa MaxCompute için --mcpy27 veya DataWorks için --dwpy27 parametresini kullanın


Çalışma zamanında isteğe bağlı bağımlılık eksik


pyodps-pack aracı isteğe bağlı bağımlılıkları otomatik olarak dahil etmez


İsteğe bağlı bağımlılığı komuta açıkça ekleyin, örneğin: pyodps-pack pandas openpyxl


İkili bağımlılık derlemesi başarısız oluyor


Eksik sistem kitaplıkları veya derleme araçları


Paketlemeden önce gerekli sistem kitaplıklarını yüklemek için --run-before parametresini kullanın; ayrıntılı çıktı için --debug parametresini ekleyin

Sonraki adımlar

Paketi oluşturduktan sonra bunu MaxCompute'a arşiv kaynağı olarak yükleyin ve PyODPS düğümünüzde referans verin. Bkz. PyODPS düğümünde üçüncü taraf pakete referans verme.