簡體   English   中英

對於setup.py腳本使用find_packages()和“requirements.txt”之間的區別

[英]Difference between using find_packages() vs “requirements.txt” for setup.py script

我一直在打包一個python項目,所以我可以在實驗室的其他系統上安裝它。 在我關於如何創建setup.py腳本的研究中,我已經看到了兩種方法。

1)使用“pip freeze> requirements.txt”命令; 然后在安裝腳本中“packages ='requirements.txt'”

2)只需在設置腳本中使用“packages = find_packages()”即可

我的問題是,這兩種方法有什么區別? 似乎“find_packages”與“pip freeze”的作用相同,但在安裝沒有任何內容的模塊方面沒有任何作用。

任何人都可以解釋這兩種方法有何不同,或者只是解釋每個方法的作用,以便我可以就使用哪種方法做出更明智的決定?

謝謝!

使用“pip freeze> requirements.txt”命令; 然后在安裝腳本中“packages ='requirements.txt'”

即使假設通過packages='requirements.txt'你的意思是packages=open('requirements.txt').read().splitlines() ,這絕對是錯誤的做法,我希望你只是簡單地做過誤讀了你所咨詢的任何來源,而不是實際上在某處發布的這種公然錯誤的信息。

setup()函數的packages關鍵字的目的是告訴setuptools在分發和安裝項目時,將包含存儲庫中Python代碼的哪些目錄。 對於大多數簡單的情況,只需要packages=find_packages()

另一方面, requirements.txt應該包含你的項目所依賴的其他人的項目列表(它應該是手工制作的,而不是將像pip freeze重新定向到它中,就像一個切葉的黑猩猩)。 將其內容傳遞給install_requires的正確setup()關鍵字是導致項目依賴性也會在某人安裝項目時安裝的原因。

暫無
暫無

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

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