为什么使用pip安装的软件包没有出现在pip freeze中?

3
我正在尝试通过pip安装这个包。当我运行pip install flask-googlemaps时,我看到了通常的输出,并成功安装了该包以及一些依赖项。如果我随后运行pip freeze,我会看到所有的依赖项都列出来,但是没有列出该包本身。为什么呢?
以下是我操作的详细过程。我在一个全新的虚拟环境中测试,以确保我没有错过它。
  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 freeze输出中,但其所有依赖项都已包含。
更奇怪的是,我现在完全可以使用该软件包。它已经安装好了,只是在pip freeze输出中没有显示出来。
3个回答

4

花了一些时间,但我找到了。

如果你运行

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

为了证明这个错误是导致 Flask-GoogleMaps 在 pip freeze 中未显示的原因,我安装了一个早期版本。
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 freeze现在可用

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上提交了一个问题。


不错的发现!谢谢你的帮助。 - Matt Davis

2

云吞,

很有趣,你遇到了那个问题。我正在使用Python 3.6,没有出现错误。

pip install -v flask-googlemaps

安装已经完成,我现在可以使用这个软件包。

我稍微查了一下,发现了以下内容:

对于flask-googlemaps,site-packages中有以下条目:

flask_googlemaps
Flask-GoogleMaps-0.2.5-dist-info

我只需将Flask-GoogleMaps-0.2.5-dist-info重命名为flask_googlemap,就能让pip freeze显示出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有一些必需的命名约定,将信息目录映射到软件包目录中....


1
如果您安装了多个版本的Python,则pip在处理版本时可能会出现意外行为。请确保明确使用pip2 installpip3 install,以及pip2 freezepip3 freeze与您打算使用的Python版本相匹配。
(注:此答案可能与OP的情况无关,但对于其他情况回答了“为什么pip安装的软件包不会显示在pip freeze中”的问题。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接