指令
命令 #
你已經學會如何使用命令列介面來執行一些任務。本篇將記錄所有可用的命令。
如要從命令列取得說明,只需呼叫 poetry
即可查看完整命令清單,然後將 --help
與任何這些命令結合,即可取得更多資訊。
全域選項 #
--verbose (-v|vv|vvv)
:增加訊息的詳細程度:“-v” 為一般輸出,“-vv” 為更詳細的輸出,而 “-vvv” 為偵錯輸出。--help (-h)
: 顯示說明資訊。--quiet (-q)
: 不會輸出任何訊息。--ansi
:強制使用 ANSI 輸出。--no-ansi
:停用 ANSI 輸出。--version (-V)
:顯示此應用程式的版本。--no-interaction (-n)
:不詢問任何互動式問題。--no-plugins
:停用外掛程式。--no-cache
:停用 Poetry 來源快取。--directory=DIRECTORY (-C)
:Poetry 命令的工作目錄(預設為目前的工作目錄)。
new #
此命令可協助你建立適合大多數專案的目錄結構,進而啟動你的新 Python 專案。
poetry new my-package
會建立以下資料夾
my-package
├── pyproject.toml
├── README.md
├── my_package
│ └── __init__.py
└── tests
└── __init__.py
如果你想要將你的專案命名為與資料夾不同的名稱,你可以傳遞 --name
選項
poetry new my-folder --name my-package
如果您想使用 src
資料夾,可以使用 --src
選項
poetry new --src my-package
將建立以下資料夾結構:
my-package
├── pyproject.toml
├── README.md
├── src
│ └── my_package
│ └── __init__.py
└── tests
└── __init__.py
--name
選項夠聰明,可偵測命名空間套件並為您建立必要的結構。
poetry new --src --name my.package my-package
將建立以下結構:
my-package
├── pyproject.toml
├── README.md
├── src
│ └── my
│ └── package
│ └── __init__.py
└── tests
└── __init__.py
選項 #
--name
:設定產生的套件名稱。--src
:使用 專案的 src 配置。--readme
:指定自述檔案副檔名。預設為md
。如果您打算發佈至 PyPI,請記住 給 PyPI 友善自述檔的建議。
init #
此命令將協助您透過互動式提示,提供套件基本資訊來建立 pyproject.toml
檔案。
它將互動式要求您填寫這些欄位,同時使用一些智慧預設。
poetry init
選項 #
--name
:套件名稱。--description
:套件說明。--author
:套件作者。--python
相容 Python 版本。--dependency
:帶有版本限制的要求套件。格式應為foo:1.0.0
。--dev-dependency
:開發需求,請參閱--dependency
。
install #
install
指令會從目前的專案讀取 pyproject.toml
檔案,解析相依性並安裝它們。
poetry install
如果目前的目錄中有一個 poetry.lock
檔案,它將使用此檔案中的確切版本,而不是解析它們。這有助於確保使用這個函式庫的每個人都會取得相同版本的相依性。
如果沒有 poetry.lock
檔案,Poetry 會在相依性解析後建立一個。
如果您想排除一個或多個相依性群組以進行安裝,可以使用 --without
選項。
poetry install --without test,docs
--no-dev
選項已不建議使用。您應該改用 --only main
或 --without dev
符號。您也可以使用 --with
選項選取選用的相依性群組。
poetry install --with test,docs
也能透過使用 only
選項僅安裝特定相依性群組。
poetry install --only test,docs
若僅想要安裝專案本身而不安裝其他相依性,請使用 --only-root
旗標。
poetry install --only-root
請參閱 相依性群組 以取得更多有關相依性群組的資訊。
如果您想同步您的環境,並確保它與鎖定檔案相符,請使用 --sync
選項。
poetry install --sync
--sync
可以用群組相關的選項結合使用。
poetry install --without dev --sync
poetry install --with docs --sync
poetry install --only dev --sync
您也可以傳遞 -E|--extras
選項(請參閱 Extras 以取得更多資訊)來指定要安裝的附加元件。傳遞 --all-extras
以安裝專案的所有定義附加元件。
poetry install --extras "mysql pgsql"
poetry install -E mysql -E pgsql
poetry install --all-extras
附加元件不會影響 --sync
。任何未指定的附加元件都將隨時移除。
poetry install --extras "A B" # C is removed
預設情況下,poetry
每次執行 install
時,都會安裝專案的套件。
$ poetry install
Installing dependencies from lock file
No dependencies to install or update
- Installing <your-package-name> (x.x.x)
如果要略過此安裝,請使用 --no-root
選項。
poetry install --no-root
類似於 --no-root
,您可以使用 --no-directory
來略過目錄路徑相依性。
poetry install --no-directory
這主要適用於 CI 中快取,或建立 Docker 影像時。請參考 常见问题解答条目 以取得有關此選項的詳細資料。
預設情況下,poetry
在安裝時不會將 Python 原始碼檔案編譯成位元碼。這會加快安裝程序,但第一次執行可能會花費一點時間,因為 Python 會自動將原始碼檔案編譯成位元碼。如果您想要在安裝期間將原始碼檔案編譯成位元碼,可以使用 --compile
選項
poetry install --compile
installer.modern-installation
設定為 false
,則 --compile
選項不會生效,因為舊的安裝程式會總是將原始碼檔案編譯成位元碼。選項 #
--without
:要忽略的相依性群組。--with
:要包含的選用相依性群組。--only
:唯一的相依性群組會包含。--only-root
:僅安裝根目錄專案,排除所有相依性。--sync
:將環境與鎖定的套件和指定群組同步。--no-root
:不要安裝根目錄套件 (您的專案)。--no-directory
:略過所有目錄路徑相依性 (包含暫態相依性)。--dry-run
:輸出作業,但不執行任何動作 (隱式啟用 –verbose)。--extras (-E)
:要安裝的功能 (允許多重值)。--all-extras
:安裝所有附加功能 (與 –extras 衝突)。--compile
:將 Python 原始碼檔案編譯成位元碼。--no-dev
:不要安裝開發相依性。(已棄用,請改用--only main
或--without dev
)--remove-untracked
:移除鎖定檔案中未呈現的相依性。(已棄用,請改用--sync
)
--only
,--with
和 --without
選項將被忽略。更新 #
如要取得相依性的最新版本並更新 poetry.lock
檔案,您應該使用 update
指令。
poetry update
這會解決專案的所有相依性,並將精確版本寫入 poetry.lock
。
如果您只想更新部分套件,而不是全部,可以按順序列出
poetry update requests toml
請注意,這不會更新 pyproject.toml
檔中指定之 版本限制 以外的相依項版本。換句話說,如果為 foo
指定的版本限制為 ~2.3
或 2.3
,且有 2.4
可用,則 poetry update foo
將會無效。若要更新 foo
,您必須更新限制,例如 ^2.3
。您可以使用 add
指令執行此操作。
選項 #
--without
:要忽略的相依性群組。--with
:要包含的選用相依性群組。--only
:唯一的相依性群組會包含。--dry-run
:輸出作業,但不會執行任何操作(隱含啟用 –verbose)。--no-dev
:不要更新開發相依項。(不建議使用,請改用--only main
或--without dev
)--lock
:不執行安裝(只更新鎖定檔)。--sync
:將環境與鎖定的套件和指定群組同步。
--only
,--with
和 --without
選項將被忽略。add #
add
指令將必要的套件新增到您的 pyproject.toml
並安裝它們。
如果您未指定版本限制,poetry 將根據可用的套件版本選擇適當的版本。
poetry add requests pendulum
您也可以在新增套件時指定限制
# Allow >=2.0.5, <3.0.0 versions
poetry add pendulum@^2.0.5
# Allow >=2.0.5, <2.1.0 versions
poetry add pendulum@~2.0.5
# Allow >=2.0.5 versions, without upper bound
poetry add "pendulum>=2.0.5"
# Allow only 2.0.5 version
poetry add pendulum==2.0.5
@
算子的更多資訊。如果您嘗試新增已存在的套件,您將會收到錯誤訊息。但是,如果您指定限制,如上所示,將使用指定的限制更新相依項。
如果您想要取得已存在相依項的最新版本,您可以使用特殊限制 latest
poetry add pendulum@latest
您也可以新增 git
相依項
poetry add git+https://github.com/sdispater/pendulum.git
或使用 ssh 取代 https
poetry add git+ssh://git@github.com/sdispater/pendulum.git
# or alternatively:
poetry add git+ssh://git@github.com:sdispater/pendulum.git
如果您需要檢出特定分支、標籤或修訂,您可以在使用 add
時指定它
poetry add git+https://github.com/sdispater/pendulum.git#develop
poetry add git+https://github.com/sdispater/pendulum.git#2.0.5
# or using SSH instead:
poetry add git+ssh://git@github.com:sdispater/pendulum.git#develop
poetry add git+ssh://git@github.com:sdispater/pendulum.git#2.0.5
或參照子目錄
poetry add git+https://github.com/myorg/mypackage_with_subdirs.git@main#subdirectory=subdir
您也可以新增本地目錄或檔案
poetry add ./my-package/
poetry add ../my-package/dist/my-package-0.1.0.tar.gz
poetry add ../my-package/dist/my_package-0.1.0.whl
如果您希望以可編輯模式安裝相依項,可以使用 --editable
選項。
poetry add --editable ./my-package/
poetry add --editable git+ssh://github.com/sdispater/pendulum.git#develop
或者,您可以在 pyproject.toml
檔中指定它。這表示本地目錄中的變更將直接反映在環境中。
[tool.poetry.dependencies]
my-package = {path = "../my/path", develop = true}
develop
屬性,以確保所有 poetry 版本的行為相同。develop
屬性為 Poetry 特有的功能,因此它不包含在封包配發中繼資料中。換句話說,它只在使用 Poetry 安裝專案時才被考慮。如果你要安裝的封包提供額外元件,你可以在新增封包時指定這些元件
poetry add "requests[security,socks]"
poetry add "requests[security,socks]~=2.22.0"
poetry add "git+https://github.com/pallets/flask.git@1.1.1[dotenv,dev]"
[
和 ]
) 視為特殊字元。建議總是將含有這些字元的參數加上引號,以防止意外殼層擴充。如果你想將封包加入特定的相依性組中,你可以使用 --group (-G)
選項
poetry add mkdocs --group docs
請參閱 相依性群組 以取得更多有關相依性群組的資訊。
選項 #
--group (-G)
:要新增相依性的組。--dev (-D)
:將封包加入開發相依性中。(已棄用,請改用-G dev
)--editable (-e)
:將 vcs/路徑相依性新增為可編輯。--extras (-E)
:為相依性啟用的額外元件。(允許多個值)--optional
:新增為選用相依性。--python
:必須安裝相依性的 Python 版本。--platform
:必須安裝相依性的平台。--source
:用於安裝封包的來源名稱。--allow-prereleases
:接受預發佈版本。--dry-run
:輸出作業,但不執行任何動作 (隱式啟用 –verbose)。--lock
:不執行安裝(只更新鎖定檔)。
移除 #
remove
指令從目前已安裝封包清單中移除一個封包。
poetry remove pendulum
如果你想從特定的相依性組中移除一個封包,你可以使用 --group (-G)
選項
poetry remove mkdocs --group docs
請參閱 相依性群組 以取得更多有關相依性群組的資訊。
選項 #
--group (-G)
:要從中移除相依性的組。--dev (-D)
:從開發相依性中移除一個封包。(已棄用,請改用-G dev
)--dry-run
:輸出作業,但不會執行任何操作(隱含啟用 –verbose)。--lock
:不執行操作(只更新鎖定檔)。
顯示 #
若要列出所有可用的封包,你可以使用 show
指令。
poetry show
如果你想看到某個封包的詳細資訊,你可以傳入封包名稱。
poetry show pendulum
name : pendulum
version : 1.4.2
description : Python datetimes made easy
dependencies
- python-dateutil >=2.6.1
- tzlocal >=1.4
- pytzdata >=2017.2.2
required by
- calendar >=1.4.0
選項 #
--without
:要忽略的相依性群組。--why
:在顯示完整清單,或單一封包的--tree
時,顯示它們是直接相依性,還是被其他封包所需要。--with
:要包含的選用相依性群組。--only
:唯一的相依性群組會包含。--no-dev
:不要列出開發相依性。(已棄用,請改用--only main
或--without dev
)--tree
:將相依性列成樹狀圖。--latest (-l)
:顯示最新版本。--outdated (-o)
:顯示最新版本,但僅限過時的封包。--all (-a)
:顯示所有封包(即使那些與目前系統不相容的封包)。--top-level (-T)
:只顯示明確定義的套件。
--only
,--with
和 --without
選項將被忽略。建置 #
build
指令會建置原始碼和輪件檔案。
poetry build
請注意,目前僅支援純 Python 輪件。
選項 #
--format (-f)
:將格式限制為wheel
或sdist
。--output (-o)
:設定建置結果的輸出目錄。預設為dist
。
發布 #
此指令會將套件(先前透過 build
指令建置)發布到遠端儲存庫。
如果這是第一次提交,它會在上傳之前自動註冊套件。
poetry publish
如果您傳遞 --build
選項,它也可以建置套件。
選項 #
--repository (-r)
:要註冊套件的儲存庫(預設:pypi
)。應與已透過config
指令設定的儲存庫名稱相符。--username (-u)
:存取儲存庫的使用者名稱。--password (-p)
:存取儲存庫的密碼。--cert
:存取儲存庫的憑證授權。--client-cert
:存取儲存庫的用戶端憑證。--dist-dir
:建置結果儲存的 Dist 目錄。預設為dist
。--build
:在發佈之前建置套件。--dry-run
:執行上傳套件以外的所有動作。--skip-existing
:略過儲存庫中已存在的檔案的錯誤。
設定 #
config
指令允許您編輯 poetry 設定和儲存庫。
poetry config --list
用法 #
poetry config [options] [setting-key] [setting-value1] ... [setting-valueN]
setting-key
是設定選項名稱,setting-value1
是設定值。請參閱 設定 所有可用的設定。
如果您的值可能以連字號 (-
) 開頭,請使用 --
來終止選項分析,例如
poetry config http-basic.custom-repo gitlab-ci-token -- ${GITLAB_JOB_TOKEN}
如果沒有 --
,如果 ${GITLAB_JOB_TOKEN}
以連字號開頭,此指令將會失敗。
選項 #
--unset
:移除由setting-key
命名的設定元素。--list
:顯示目前設定變數的清單。--local
:設定/取得專屬於專案的設定(在當地設定檔poetry.toml
中)。
執行 #
run
指令在專案的虛擬環境中執行指定的指令。
poetry run python -V
它也可以執行在 pyproject.toml
中定義的其中一個指令碼。
因此,如果有一個像這樣定義的指令碼
[tool.poetry.scripts]
my-script = "my_module:main"
你可以這樣執行
poetry run my-script
請注意此指令沒有選項。
shell #
shell 指令在專案的虛擬環境中產生一個 shell。
預設情況下會偵測並使用目前啟用的 shell。無法這樣做的話,則會使用透過環境變數定義的 shell,在 *nix 中為 SHELL
,在 Windows 中為 COMSPEC
。
如果沒有虛擬環境,則會建立一個虛擬環境。
poetry shell
請注意此指令會啟動新的 shell 並啟用虛擬環境。
因此,應該使用 exit
來正確離開 shell 和虛擬環境,而不是 deactivate
。
check #
check
指令確認 pyproject.toml
檔案的內容以及其與 poetry.lock
檔案的一致性。如有任何錯誤,它會傳回詳細的報告。
poetry check
選項 #
--lock
:驗證poetry.lock
檔案存在於目前的pyproject.toml
檔案中。
search #
此指令在遠端索引中搜尋套件。
poetry search requests pendulum
lock #
此指令鎖定 (不安裝) pyproject.toml
中指定的相依關係。
--no-update
選項。此指令也可以用於提交前掛勾。請參閱 提交前掛勾 以取得更多資訊。poetry lock
選項 #
--check
:確認poetry.lock
與pyproject.toml
一致。(已棄用)請改用poetry check --lock
。--no-update
:不更新已鎖定的版本,只更新鎖定檔案。
version #
此指令顯示專案的目前版本,或者提高專案版本,並且如果提供了有效的提升規則,會將新版本寫回 pyproject.toml
。
新版本應該是有效的 PEP 440 字串或有效的提升規則:patch
、minor
、major
、prepatch
、preminor
、premajor
、prerelease
。
下表說明了這些規則的效果,並用具體範例來說明。
規則 | 之前 | 之後 |
---|---|---|
主要 | 1.3.0 | 2.0.0 |
次要 | 2.1.4 | 2.2.0 |
修補 | 4.1.1 | 4.1.2 |
主要前 | 1.0.2 | 2.0.0a0 |
preminor | 1.0.2 | 1.1.0a0 |
prepatch | 1.0.2 | 1.0.3a0 |
prerelease | 1.0.2 | 1.0.3a0 |
prerelease | 1.0.3a0 | 1.0.3a1 |
prerelease | 1.0.3b0 | 1.0.3b1 |
選項 --next-phase
允許遞增預發行程式的版本。
規則 | 之前 | 之後 |
---|---|---|
prerelease –next-phase | 1.0.3a0 | 1.0.3b0 |
prerelease –next-phase | 1.0.3b0 | 1.0.3rc0 |
prerelease –next-phase | 1.0.3rc0 | 1.0.3 |
選項 #
--next-phase
:遞增當前版本階段。--short (-s)
:僅輸出版本號碼。--dry-run
:不要更新 pyproject.toml 檔案。
匯出 #
此命令將鎖定檔案匯出到其他格式。
poetry export -f requirements.txt --output requirements.txt
install
命令不同,此命令僅包括專案中的依存關係,這些依存關係在沒有指定任何選項時,會於 tool.poetry.dependencies
中定義的隱含 main
群組中。選項 #
--format (-f)
:要匯出的格式(預設值:requirements.txt
)。目前僅支援constraints.txt
和requirements.txt
。--output (-o)
:輸出檔案的名稱。若省略,則列印至標準輸出。--dev
:包含開發依存關係。(已過時,請改用--with dev
)--extras (-E)
:要包含的額外依存關係組。--without
:要忽略的相依性群組。--with
:要包含的選用相依性群組。--only
:唯一的相依性群組會包含。--without-hashes
:從匯出的檔案中排除雜湊。--without-urls
:從匯出的檔案中排除原始儲存庫 URL。--with-credentials
:包含其他索引的認證。
env #
env
命令重新編組子命令,以與特定專案相關聯的虛擬環境進行互動。
有關這些命令的更多資訊,請參閱 管理環境。
快取 #
cache
命令重新編組子命令,以與 Poetry 的快取進行互動。
cache list #
cache list
命令會列出 Poetry 可用的快取。
poetry cache list
cache clear #
cache clear
命令會從快取存放庫中移除套件。
例如,若要清除 pypi
存放庫中所有快取套件,請執行
poetry cache clear pypi --all
若要從快取中移除特定套件,您必須以 快取:套件:版本
的形式指定快取項目。
poetry cache clear pypi:requests:2.24.0
source #
source
命名空間會對子指令重新分組,以管理 Poetry 專案的資源儲存庫。
source add #
source add
指令會將來源組態新增至專案。
例如,若要新增 pypi-test
來源,您可以執行
poetry source add pypi-test https://test.pypi.org/simple/
您無法為自訂資源儲存庫使用 pypi
名稱,因為它已保留供預設 PyPI 來源使用。不過,您可以設定 PyPI 的優先順序
poetry source add --priority=explicit pypi
選項 #
--default
:將此來源設定為 預設(停用 PyPI)。已棄用,請改用--priority
。--secondary
:將此來源設定為 次要 來源。已棄用,請改用--priority
。--priority
:設定此來源的優先順序。可接受的值為:default
、secondary
、supplemental
和explicit
。如需詳細資訊,請參閱 資源儲存庫 中的專屬區塊。
source show #
source show
指令會顯示專案所有已組態來源的資訊。
poetry source show
或者,您可以透過指定來源名稱來顯示一或多個來源的資訊。
poetry source show pypi-test
pyproject.toml
組態的來源,不包含預設的 PyPI。source remove #
source remove
指令會從您的 pyproject.toml
中移除已組態的來源。
poetry source remove pypi-test
about #
about
指令會顯示關於 Poetry 的全域性資訊,包括目前版本和 poetry-core
版本。
poetry about
help #
help
指令會顯示全域性說明,或顯示針對特定指令的說明。
若要顯示全域性說明
poetry help
若要顯示針對特定指令的說明,例如 show
poetry help show
--help
選項也可以傳遞給任何指令,以獲得針對特定指令的說明。
例如
poetry show --help
list #
list
指令會顯示所有可用的 Poetry 指令。
poetry list
self #
self
命名空間會對子指令重新分組,以管理 Poetry 安裝本身。
self add #
self add
指令會安裝 Poetry 外掛程式並讓它們在執行階段可用。此外,它也可以用來升級 Poetry 自身的相依項或將額外的套件注入執行階段環境
例如,若要安裝 poetry-plugin-export
外掛程式,您可以執行
poetry self add poetry-plugin-export
若要更新到最新版本的 poetry-core
,您可以執行
poetry self add poetry-core@latest
若要新增鑰匙圈提供者 artifacts-keyring
,您可以執行
poetry self add artifacts-keyring
選項 #
--editable (-e)
:將 vcs/路徑相依性新增為可編輯。--extras (-E)
:為相依性啟用的額外元件。(允許多個值)--allow-prereleases
:接受預發佈版本。--source
:用於安裝封包的來源名稱。--dry-run
:輸出作業,但不執行任何動作 (隱式啟用 –verbose)。
self update #
self update
指令會更新目前執行階段環境中的 Poetry 版本。
self update
指令的運作方式與 update
指令 相同。不過不同之處在於,管理的套件是針對 Poetry 的執行階段環境。poetry self update
選項 #
--preview
:允許安裝前置版本。--dry-run
:輸出作業,但不執行任何動作 (隱式啟用 –verbose)。
self lock #
self lock
指令會讀取此 Poetry 安裝的系統 pyproject.toml
檔案。系統相依項會鎖定在相對應的 poetry.lock
檔案中。
poetry self lock
選項 #
--check
:驗證poetry.lock
是否與pyproject.toml
相符。(已停用)--no-update
:不更新已鎖定的版本,只更新鎖定檔案。
self show #
self show
指令的行為類似於 show 指令,但會在 Poetry 的執行階段環境中執行。它會列出 Poetry 安裝環境中安裝的所有套件。
若要僅顯示已透過 self add 新增的額外套件及其相依項,請使用 self show --addons
。
poetry self show
選項 #
--addons
:僅列出已安裝的附加元件套件。--tree
:將相依性列成樹狀圖。--latest (-l)
:顯示最新版本。--outdated (-o)
:顯示最新版本,但僅限過時的封包。
self show plugins #
self show plugins
指令會列出所有目前已安裝的外掛程式。
poetry self show plugins
self remove #
self remove
指令會移除已安裝的附加元件套件。
poetry self remove poetry-plugin-export
選項 #
--dry-run
:輸出操作,但不會執行任何操作(隱含啟用 –verbose)。
self install #
self install
命令可確保在目前的執行時間環境中安裝所指定的所有額外套件。
self install
命令與 install
命令 的運作方式類似。不過,不同之處在於所管理的套件是屬於 Poetry 的執行時間環境。poetry self install --sync
選項 #
--sync
:將環境與鎖定的套件和指定群組同步。--dry-run
:輸出作業,但不執行任何動作 (隱式啟用 –verbose)。