日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

PyODPS制作第三方包

PyODPS自V0.11.3版本開始提供了pyodps-pack命令行工具,用于制作符合PyODPS及DataWorks PyODPS節(jié)點(diǎn)標(biāo)準(zhǔn)的三方包,使用方法類似pip命令。您可以使用該工具將所有依賴項(xiàng)目制作成一個后綴為.tar.gz的壓縮包,其中包含所有依照MaxCompute或DataWorks環(huán)境編譯并打包的項(xiàng)目依賴。您也可以使用該工具打包您項(xiàng)目中自行創(chuàng)建的Python包。

環(huán)境準(zhǔn)備

pyodps-pack命令需要在操作系統(tǒng)命令行(Windows CMD或者macOS/Linux Shell)中執(zhí)行,DataWorks、odpscmd和Python命令行中不能調(diào)用。

Docker模式

您需要安裝Docker以順利使用Docker模式運(yùn)行pyodps-packpyodps-pack會自動調(diào)用已安裝的Docker并下載鏡像,您無需手動執(zhí)行下載Docker鏡像和運(yùn)行Docker命令的操作。

說明

僅支持在Docker模式下執(zhí)行pyodps-pack命令,非Docker模式執(zhí)行會報錯。

  • Linux環(huán)境:可以參考Docker官方文檔安裝Docker。

  • macOS或Windows環(huán)境:

說明

我們沒有在包括minikube在內(nèi)的其他Docker環(huán)境中測試pyodps-pack,不保證在這些環(huán)境中的可用性。

對于Windows用戶,可能您的Docker服務(wù)需要依賴Windows系統(tǒng)的Server服務(wù)才能啟動,而Server服務(wù)由于安全問題在很多企業(yè)被禁止啟動。在遇到問題時,請改用Linux打包或者設(shè)法啟用Server服務(wù)。Rancher Desktop在Windows 10下可能無法使用containerd作為容器引擎,可以嘗試改用dockerd,配置詳情請參考Container Engine

無Docker模式

說明

當(dāng)您的環(huán)境支持Docker時,推薦采用Docker模式進(jìn)行打包PyODPS所有依賴、代碼以及Git Repo中的代碼。若Docker不可用,才考慮使用非Docker模式。需要注意的是,非Docker模式生成的包可能不可用。

如果您安裝Docker遇到困難,可以嘗試使用非Docker模式。使用方式為新增一個--without-docker參數(shù)。該模式需要您的Python環(huán)境中已經(jīng)安裝pip。如果在該模式下執(zhí)行pyodps-pack命令出現(xiàn)錯誤或者生成的包不可用,請改用Docker模式。Windows用戶需要安裝Git Bash以使用該模式,Git Bash包含在Git for Windows中。

打包操作

使用限制

  • MaxCompute建議除非不得已,新項(xiàng)目請盡量使用Python 3。我們不保證下面打包步驟對Python 2的可用性。

  • 舊項(xiàng)目請盡量遷移至Python 3以減少后續(xù)維護(hù)的難度。

  • 在Linux中使用下列命令時,請使用sudo調(diào)用pyodps-pack以保證Docker正常運(yùn)行。

  • 在macOS中使用下列命令時,請不要使用sudo調(diào)用pyodps-pack以避免可能引發(fā)的權(quán)限錯誤。

打包所有依賴

說明

部分Python包可能存在一些可選依賴,例如pandas在使用to_excel方法時依賴openpyxl包,pyodps-pack無法自動包含這部分依賴,請根據(jù)三方包文檔手動在打包命令中添加這些依賴。

安裝完P(guān)yODPS后,您可以在本地命令行中使用以下命令為Python 3打包pandas以及pandas的依賴項(xiàng)。

  • 使用Docker模式打包:

    pyodps-pack pandas
  • 使用非Docker模式打包:

    pyodps-pack --without-docker pandas
  • 打包時指定所需版本:

    pyodps-pack pandas==1.2.5

經(jīng)過一系列的打包步驟,工具會顯示包中的所有依賴版本,具體如下。并在當(dāng)前目錄中生成一個packages.tar.gz文件,其中包括下面列出的所有依賴項(xiàng)目。

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

如果您希望為Python 2.7打包,請確定包的后續(xù)使用環(huán)境為MaxCompute還是DataWorks,辨別方法請參考PyODPS DataFrame的代碼運(yùn)行環(huán)境

  • 在MaxCompute中使用Python 2.7包的打包命令:

    pyodps-pack --mcpy27 pandas
  • 在DataWorks中使用Python 2.7包的打包命令:

    pyodps-pack --dwpy27 pandas

打包自定義代碼

pyodps-pack支持打包使用setup.pypyproject.toml組織的用戶自定義Python Project。詳情請參考Build System Interface

示例:以基于pyproject.toml組織的項(xiàng)目為例,為您介紹如何使用pyodps-pack打包。假定項(xiàng)目的目錄結(jié)構(gòu)如下:

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

其中pyproject.toml內(nèi)容可能為:

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

完成包的開發(fā)后,使用以下命令可以將此包和所有依賴打包進(jìn)packages.tar.gz文件中(path_to_packagetest_package_root的上級路徑):

pyodps-pack /<path_to_package>/test_package_root

打包Git Repo中的代碼

pyodps-pack支持打包遠(yuǎn)程Git代碼倉庫(例如GitHub)中的代碼。以PyODPS本身為例,可以使用以下命令執(zhí)行打包:

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

如果想要打包某個分支或者Tag,可以使用:

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

如果打包前需要安裝一些打包依賴(例如cython),可以使用--install-requires參數(shù)增加安裝時依賴。也可以編寫一個格式與requirements.txt相同的install-requires.txt文件,并使用--install-requires-file選項(xiàng)指定。例如,如果需要先安裝Cython再打包PyODPS,可以執(zhí)行如下命令:

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

也可以創(chuàng)建一個install-requires.txt文件并依照requirements.txt格式編寫如下:

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

更復(fù)雜的例子:二進(jìn)制依賴

一部分包包含額外的二進(jìn)制依賴,例如需要編譯或安裝的外部動態(tài)鏈接庫。pyodps-pack提供了--run-before參數(shù)用以指定打包前需要執(zhí)行的步驟,該步驟中可以安裝所需的二進(jìn)制依賴。下面以地理信息庫GDAL為例為您介紹如何打包。

  1. 確定打包時需要安裝的二進(jìn)制依賴。

    根據(jù)GDAL 3.6.0在PyPI上的文檔,我們需要安裝3.6.0以上版本的libgdal。libgdal編譯說明則指出,該包依賴6.0版本以上的PROJ包,這兩個二進(jìn)制包均使用CMake打包。據(jù)此,編寫二進(jìn)制包安裝文件并保存為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. 使用pyodps-pack進(jìn)行打包,命令如下:

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

命令詳情

下面列出pyodps-pack命令的可用參數(shù),可用于控制打包過程:

參數(shù)名稱

描述

-r--requirement <file>

根據(jù)給定的依賴文件打包。該選項(xiàng)可被指定多次。

-o--output <file>

指定打包生成目標(biāo)文件名,默認(rèn)為packages.tar.gz

--install-requires <item>

指定打包時所需的PyPI依賴,可指定多個,一般用于命令行中。這些依賴不一定會包含在最終的包中。

--install-requires-file <file>

指定打包時所需的PyPI依賴定義文件,可指定多個。這些依賴不一定會包含在最終的包中。

--run-before <script-file>

指定打包前需要執(zhí)行的Bash腳本,通常可用于安裝二進(jìn)制依賴。

-x--exclude <dependency>

指定打包時需要從最終包刪除的PyPI依賴。該選項(xiàng)可被指定多次。

--no-deps

指定打包時不包含指定項(xiàng)目的依賴項(xiàng)。

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

指定打包時所需的PyPI URL。如果缺省,會使用pip config list命令返回的global.index-url值,該值通常配置在pip.conf配置文件中。

--trusted-host <host>

指定打包時需要忽略證書問題的HTTPS域名。

-l--legacy-image

指定后,將使用CentOS 5鏡像進(jìn)行打包,這使得包可以被用在舊版專有云等環(huán)境中。

--mcpy27

指定后,將為MaxCompute內(nèi)的Python 2.7制作三方包。如果啟用,將默認(rèn)--legacy-image選項(xiàng)開啟。

--dwpy27

指定后將為DataWorks內(nèi)的Python 2.7制作三方包。如果啟用。將默認(rèn)--legacy-image選項(xiàng)開啟。

--prefer-binary

指定后,將傾向于選擇PyPI中包含二進(jìn)制編譯的舊版,而不是僅有源碼包的新版。

--docker-args <args>

指定在執(zhí)行Docker命令時需要額外附加的參數(shù)。如有多個參數(shù)需用引號包裹,例如--docker-args "--ip 192.168.1.10"

--without-docker

使用無Docker模式運(yùn)行pyodps-pack。當(dāng)依賴中存在二進(jìn)制依賴,可能報錯或?qū)е掳豢捎谩?/p>

--without-merge

下載或生成Wheel包后不生成.tar.gz包,而是保留.whl文件。

--debug

指定后,將輸出命令運(yùn)行的詳細(xì)信息,用于排查問題。

第三方包的使用方法請參見PyODPS使用第三方包