簡體   English   中英

為什么pip安裝包不會出現在pip凍結中?

[英]Why doesn't pip installed package show up in pip freeze?

我正在嘗試通過pip安裝此軟件包 當我運行pip install flask-googlemaps ,我看到通常的輸出,並且包已成功安裝,還有一些依賴項。 如果我然后運行pip freeze ,我會看到列出的所有依賴項,但不是包本身。 為什么?

這是我的流程的全面細分。 我測試了一個新鮮的virtualenv,以確保我不只是錯過它。

  1. $ mkvirtualenv test1

     New python executable in /Users/me/.virtualenvs/test1/bin/python2.7 Also creating executable in /Users/me/.virtualenvs/test1/bin/python Installing setuptools, pip, wheel...done. virtualenvwrapper.user_scripts creating /Users/me/.virtualenvs/test1/bin/predeactivate virtualenvwrapper.user_scripts creating /Users/me/.virtualenvs/test1/bin/postdeactivate virtualenvwrapper.user_scripts creating /Users/me/.virtualenvs/test1/bin/preactivate virtualenvwrapper.user_scripts creating /Users/me/.virtualenvs/test1/bin/postactivate virtualenvwrapper.user_scripts creating /Users/me/.virtualenvs/test1/bin/get_env_details 
  2. $ pip freeze

     (no results, because nothing has been installed yet) 
  3. $ pip install flask-googlemaps

     Collecting flask-googlemaps Using cached Flask_GoogleMaps-0.2.5-py2.py3-none-any.whl Collecting flask (from flask-googlemaps) Using cached Flask-0.12.2-py2.py3-none-any.whl Collecting Werkzeug>=0.7 (from flask->flask-googlemaps) Using cached Werkzeug-0.12.2-py2.py3-none-any.whl Collecting Jinja2>=2.4 (from flask->flask-googlemaps) Using cached Jinja2-2.9.6-py2.py3-none-any.whl Collecting click>=2.0 (from flask->flask-googlemaps) Using cached click-6.7-py2.py3-none-any.whl Collecting itsdangerous>=0.21 (from flask->flask-googlemaps) Collecting MarkupSafe>=0.23 (from Jinja2>=2.4->flask->flask-googlemaps) Installing collected packages: Werkzeug, MarkupSafe, Jinja2, click, itsdangerous, flask, flask-googlemaps Successfully installed Jinja2-2.9.6 MarkupSafe-1.0 Werkzeug-0.12.2 click-6.7 flask-0.12.2 flask-googlemaps itsdangerous-0.24 
  4. $ pip freeze

     click==6.7 Flask==0.12.2 itsdangerous==0.24 Jinja2==2.9.6 MarkupSafe==1.0 Werkzeug==0.12.2 

請注意,flask-googlemaps不包含在第二個pip凍結輸出中,但它的所有依賴項都是。

更奇怪的是,我現在可以完全使用該軟件包。 它已安裝,它只是沒有顯示在pip凍結輸出中。

花了一些時間,但我追查了它。

如果你跑

pip install -v flask-googlemaps

你會在最后看到

Installing collected packages: Werkzeug, MarkupSafe, Jinja2, click, itsdangerous, flask, flask-googlemaps

  Compiling /private/var/folders/2h/0dr8jftd1916yq_lp40__wzh0000gn/T/pip-build-avapA_/Jinja2/jinja2/asyncfilters.py ...
    File "/private/var/folders/2h/0dr8jftd1916yq_lp40__wzh0000gn/T/pip-build-avapA_/Jinja2/jinja2/asyncfilters.py", line 7
      async def auto_to_seq(value):
              ^
  SyntaxError: invalid syntax

  Compiling /private/var/folders/2h/0dr8jftd1916yq_lp40__wzh0000gn/T/pip-build-avapA_/Jinja2/jinja2/asyncsupport.py ...
    File "/private/var/folders/2h/0dr8jftd1916yq_lp40__wzh0000gn/T/pip-build-avapA_/Jinja2/jinja2/asyncsupport.py", line 22
      async def concat_async(async_gen):
              ^
  SyntaxError: invalid syntax

為了證明這個錯誤是燒瓶谷歌地圖沒有出現在pip凍結的原因,我安裝了以前的版本。

pip install flask-googlemaps==0.2.4
Collecting flask-googlemaps==0.2.4
Collecting Flask (from flask-googlemaps==0.2.4)
  Using cached Flask-0.12.2-py2.py3-none-any.whl
Collecting Werkzeug>=0.7 (from Flask->flask-googlemaps==0.2.4)
  Using cached Werkzeug-0.12.2-py2.py3-none-any.whl
Collecting Jinja2>=2.4 (from Flask->flask-googlemaps==0.2.4)
  Using cached Jinja2-2.9.6-py2.py3-none-any.whl
Collecting click>=2.0 (from Flask->flask-googlemaps==0.2.4)
  Using cached click-6.7-py2.py3-none-any.whl
Collecting itsdangerous>=0.21 (from Flask->flask-googlemaps==0.2.4)
Collecting MarkupSafe>=0.23 (from Jinja2>=2.4->Flask->flask-googlemaps==0.2.4)
Installing collected packages: Werkzeug, MarkupSafe, Jinja2, click, itsdangerous, Flask, flask-googlemaps
Successfully installed Flask-0.12.2 Jinja2-2.9.6 MarkupSafe-1.0 Werkzeug-0.12.2 click-6.7 flask-googlemaps-0.2.4 itsdangerous-0.24

Pip凍結現在有效

pip freeze
click==6.7
Flask==0.12.2
Flask-GoogleMaps==0.2.4
itsdangerous==0.24
Jinja2==2.9.6
MarkupSafe==1.0
Werkzeug==0.12.2

我剛剛代表您提交了GitHub問題

餛飩,

有趣的是你遇到了這個問題。 我正在使用python 3.6並且沒有運行錯誤

pip install -v flask-googlemaps

它完全安裝,我可以使用該包。

我做了一點點戳,這是我發現的:

site-packages為flask-googlemaps提供以下條目

flask_googlemaps
Flask-GoogleMaps-0.2.5-dist-info

通過簡單地重命名Flask-GoogleMaps-0.2.5-dist-info以匹配flask_googlemap的格式,我能夠獲得pip凍結以顯示flask-googlemaps:

davidj> mv Flask-GoogleMaps-0.2.5.dist-info Flask_GoogleMaps-0.2.5.dist-info
davidj> pip freeze
clickk==6.7
Flask==0.12.2
Flask-GoogleMaps==0.2.5
itsdangerous==0.24
Jinja2==2.9.6
MarkupSafe==1.0
pkg-resources==0.0.0
Werkzeug==0.12.2

在這之后,所有的pip函數都適用於包。

也許pip有一些必要的命名約定來將info目錄映射到包目錄....

如果您安裝了多個版本的python,則pip可能會有與版本相關的意外行為。 確保明確使用pip2 installpip3 install ,並使用pip2 freezepip3 freeze來匹配你打算使用的python版本。

(注意:這個答案可能與OP的情況無關,但對於其他一些案例,回答了“為什么pip安裝包不會出現在pip凍結?”的問題。)

暫無
暫無

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

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