代码之家  ›  专栏  ›  技术社区  ›  guettli

脆弱控制台脚本:pkg_resources.distributionnotfound

  •  -1
  • guettli  · 技术社区  · 7 年前

    如果我通过setup.py中的入口点创建控制台脚本,则会创建此文件:

    #!/home/myproject_cok_d/bin/python
    # EASY-INSTALL-ENTRY-SCRIPT: 'mylib','console_scripts','do-magic'
    __requires__ = 'mylib'
    import re
    import sys
    from pkg_resources import load_entry_point
    
    if __name__ == '__main__':
        sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
        sys.exit(
            load_entry_point('mylib', 'console_scripts', 'do-magic')()
        )
    

    不幸的是,这个脚本是脆弱的。

    有时我会遇到这样的例外:

    Traceback (most recent call last):
      File ".../bin/do-magic", line 6, in <module>
        from pkg_resources import load_entry_point
      File ".../local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2999, in <module>
        @_call_aside
      File ".../local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2985, in _call_aside
        f(*args, **kwargs)
      File ".../local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3012, in _initialize_master_working_set
        working_set = WorkingSet._build_master()
      File ".../local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 662, in _build_master
        ws.require(__requires__)
      File ".../local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 970, in require
        needed = self.resolve(parse_requirements(requirements))
      File ".../local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 856, in resolve
        raise DistributionNotFound(req, requirers)
    pkg_resources.DistributionNotFound: The 'PyPDF2==1.26' distribution was not found and is required by mylib
    

    有没有办法写我的剧本( do-magic )更成熟?

    在这种情况下:它不需要pypdf2。

    0 回复  |  直到 7 年前
        1
  •  2
  •   xilpex    7 年前

    我也遇到了同样的错误。要解决此问题,必须更新 PYTHONPATH 添加站点目录。在Windows上,您可以转到命令提示符并键入以下内容:

    set pythonpath=<PATH_TO_SITE_DIR>
    

    麦克是这样的:

    export PYTHONPATH="${PYTHONPATH}:<PATH_TO_SITE_DIR>"
    

    Here 有关错误的详细信息。

    推荐文章