作者uranusjr (←這人是超級笨蛋)
看板Python
標題Re: [問題] 如何得知套件只需要下載python程式碼
時間Wed Sep 18 01:45:46 2019
※ 引述《eye5002003 (下一夜)》之銘言:
: 有些套件是基於python標準庫寫的
: 肯定抓下來就能馬上用了
: 但是有些是需要先用C/C++編譯東西出來才能套用
: 我要怎麼分辨?
: 只能看作者有沒有註明而已嗎?
: 有套件是用pip抓的時候就連同dll一起拿到手的嗎?
: 還是pip就只會抓到python程式碼而已?
如同推文所述, 即使非純 Python 的套件也不見得需要編譯
原因也如你的猜測, 套件作者會為(他想支援的)平台發布可直接使用的 binary
所以大部分狀況下「是不是純 Python」並非特別有用的準則
如果你想達成的行為是「讓 pip 不要在安裝套件時嘗試編譯」
那麼 pip install --only-binary=:all: 可以達到差不多的效果
這會讓 pip 只考慮以 .whl 發行的套件, 進而避開所有編譯[*]
當然如果你有套件非要編譯才能裝的, 在這個狀態下就會安裝失敗
[*]: 這可能會讓某些本來可以安裝, 但是並非以 .whl 格式發行的套件無法安裝
然而 pip 無法在安裝開始之前預先知道非 .whl 的格式需不需要編譯
所以在這種狀況你可以改成手動列出不想編譯的套件, 而非使用 :all:
https://pip.pypa.io/en/stable/reference/pip_install/#cmdoption-no-binary
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.11.142 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1568742350.A.C79.html
推 eye5002003: 原來安裝時還能編譯喔,那安裝基於OpenAL之類的套件時 09/18 07:16
→ eye5002003: python也會安裝驅動程式嗎?(既然編譯都能代勞了) 09/18 07:18
推 CodingMan: 老實說我覺得原Po 根本沒自己試過就覺得有問題然後就上 09/18 11:56
→ CodingMan: 來問了 09/18 11:56
→ uranusjr: @eye5002003 理論上可以, 但是偵測驅動程式有沒有被安裝 09/18 12:52
→ uranusjr: 比較困難, 應該很少人會這麼做 (就像 pip 也是假設你有 09/18 12:53
→ uranusjr: 事先安裝編譯器, 不會自動幫你安裝一樣) 09/18 12:53
→ roccqqck: 的確有些pypi要裝其他非python套件才能用 09/23 18:31
→ roccqqck: 但也不一定要build 通常是安裝binary就好 09/23 18:43
→ roccqqck: 例如ta-lib 09/24 20:18