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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ç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:
|
|
|
|
|
|
|
|
|
|
|
|
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.
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
containerdkonteyner motoru olarak çalışmayabilir. Bunun yerinedockerdkullanın. Yapılandırma adımları için bkz. Container Engine.
Docker olmayan modun ayarlanması
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
piparacı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
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-packkomutlarının başınasudoifadesini ekleyin.macOS'ta
sudoilepyodps-packkullanmayı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.
-
PROJ ve GDAL'ı derleyip yükleyen
install-gdal.shadlı 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 -
Betik ve
oldest-supported-numpyderleme bağımlılığı ilepyodps-packkomutunu çalıştırın:pyodps-pack --install-requires oldest-supported-numpy --run-before install-gdal.sh gdal==3.6.0
Parametreler
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Paketleme hatalarını giderme
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.