簡體   English   中英

Pipfile 和 Pipfile.lock 如何使用?

[英]How are Pipfile and Pipfile.lock used?

在 Python 包裝的上下文中,似乎Pipfile / Pipfile.lock旨在替代requirements.txt 但是,關於這些實際工作原理的文檔並不多。 我在 Python 網站的PyPi部分找到了 pipfile 的不斷發展的描述,但它非常混亂,並沒有解釋文件不同部分的語義。

有關如何理解這些文件的任何指示?

如果您對 Ruby 的 Bundler 或 Node 的 Npm 有一定的了解,這些文件背后的概念很簡單,並且類似於其他現有工具。 Pipenv是一個包和虛擬環境管理工具,它使用 Pipfile 和 Pipfile.lock 文件來實現這些目標。

Pipenv 以一種默認的標准方式為您處理虛擬環境(不再需要激活和停用)。 下面是一些幫助您入門的基礎知識,請在pipenv 網站上查看更多信息

入門

開始使用 pipenv 很容易,在您的項目文件夾類型中...

$ pipenv install

...如果它已經有一個requirements.txt文件,它會生成一個Pipfile requirements和虛擬環境文件夾的Pipfile文件,否則它會生成一個空的Pipfile文件。 如果您不喜歡或改變了對已安裝的某些內容的看法,只需鍵入...

$ pipenv uninstall <package>

......你可以走了。 要激活 pipenv 已經生成的虛擬環境,請使用...

$ pipenv shell

...您的虛擬環境將被激活。 離開環境...

$ exit

...您將回到原來的終端會話。

文件

Pipfile文件旨在為您的 Python 應用程序或庫指定包要求,包括開發和執行。 您可以通過簡單地使用...

$ pipenv install flask

... 它將作為部署和執行的依賴項添加或通過使用 ...

$ pipenv install --dev pytest

...它將用作開發時間的依賴項。 在這兩種情況下,如果您需要更具體地了解包版本,如文檔中所述,pipenv 使用與 pip 相同的版本說明符 文件語法非常簡單,如下所示。

[[source]] # Here goes your package sources (where you are downloading your packages from).
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[packages] # Here goes your package requirements for running the application and its versions (which packages you will use when running the application).
requests = "*"
flask = "*"
pandas = "*"

[dev-packages] # Here goes your package requirements for developing the application and its versions (which packages you will use when developing the application)
pylint = "*"
wheel = "*"

[requires] # Here goes your required Python version.
python_version = "3.6"

pipfile.lock

Pipfile.lock旨在根據Pipfile 中存在的包指定應該使用哪個特定版本,避免自動升級相互依賴的包和破壞項目依賴樹的風險。

您可以使用...鎖定當前安裝的軟件包

$ pipenv lock

...並且該工具將根據當前安裝的版本查找您的虛擬環境文件夾以自動為您生成鎖定文件。 文件語法不像Pipfile那樣明顯,為簡潔起見,這里不再顯示。

值得注意的是,截至目前(2022 年), pipfilepipfile.lock僅由同一作者編寫的工具pipenv使用。 目前沒有提及這些文件的標准(即PEP )。

關於pipenv ,還有其他流行的工具(如詩歌)試圖在不使用pipfiles的情況下解決類似的用例。

與此相關的是, pyproject.toml也開始受到各種 PEP 的支持,例如660621 ,它正在慢慢獲得setuptoolsflithatch的支持。

正如@Charles Duffy 在上面解釋的那樣,它是 Ruby 世界中GemfileGemfile.lock的直接模擬。 有關更多詳細信息,請參閱下面的參考資料。

參考: https : //medium.com/never-hop-on-the-bandwagon/gemfile-and-gemfile-lock-in-ruby-65adc918b856

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM