【问题标题】:Why doesn't pip installed package show up in pip freeze?为什么 pip 安装的包不显示在 pip freeze 中?
【发布时间】:2017-09-07 22:02:15
【问题描述】:

我正在尝试通过 pip 安装 this package。当我运行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 freeze 输出中,但它的所有依赖项都包含。

更奇怪的是,我现在拥有使用该软件包的完全权限。它已安装,只是没有显示在 pip freeze 输出中。

【问题讨论】:

    标签: python pip


    【解决方案1】:

    馄饨

    有趣的是,您遇到了这个问题。我正在使用 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 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 有一些必要的命名约定来将 info 目录映射到包目录....

    【讨论】:

      【解决方案2】:

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

      如果你跑了

      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 issue

      【讨论】:

      • 不错的发现!感谢您的帮助。
      【解决方案3】:

      如果您安装了多个版本的 python,pip 可能会出现与版本相关的意外行为。确保明确使用pip2 installpip3 install,以及pip2 freezepip3 freeze 以匹配您打算使用的python 版本。

      (注意:此答案可能与 OP 的情况无关,但在其他情况下回答了“为什么 pip 安装的包不显示在 pip freeze 中?”的问题。)

      【讨论】:

        猜你喜欢
        • 2017-07-07
        • 2019-12-24
        • 1970-01-01
        • 2019-01-24
        • 2021-02-24
        • 1970-01-01
        • 2016-03-02
        • 1970-01-01
        相关资源
        最近更新 更多