【问题标题】:Troubleshooting pkg_resources.DistributionNotFound error对 pkg_resources.DistributionNotFound 错误进行故障排除
【发布时间】:2018-09-17 21:06:12
【问题描述】:

为什么this simple program 在运行时会导致pkg_resources.DistributionNotFound 错误,我们该如何解决?

#setup.py
from setuptools import setup

setup(name='my_project',
    version='0.1.0',
    packages=['my_project'],
    entry_points={
        'console_scripts': [
            'my_project = my_project.__main__:main'
        ]
     },
)

.

##my_project/__main__.py

import sys

def main(args=None):
     print("Do Something")

if __name__ == "__main__":
    main()

构建: python setup.py install --root=target --prefix=usr
运行: .\target\usr\Scripts\my_project.exe

结果

Traceback (most recent call last):
  File "D:\code-maphew\scraps\bug-dist-not-found\target\usr\Scripts\my_project-script.py", line 6, in <module>
    from pkg_resources import load_entry_point
  File "C:\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\pkg_resources\__init__.py", line 3105, in <module>
    @_call_aside
  File "C:\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\pkg_resources\__init__.py", line 3089, in _call_aside
    f(*args, **kwargs)
  File "C:\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\pkg_resources\__init__.py", line 3118, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "C:\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\pkg_resources\__init__.py", line 578, in _build_master
    ws.require(__requires__)
  File "C:\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\pkg_resources\__init__.py", line 895, in require
    needed = self.resolve(parse_requirements(requirements))
  File "C:\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\pkg_resources\__init__.py", line 781, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'my-project==0.1.0' distribution was not found and is required by the application

此 Q 类似于 pkg_resources.DistributionNotFound when using a module installed from a bdist_rpm,但不是构建 RPM。在那个 Q 中使用--prefix 解决了这个问题。那对我没有用。我已经在 Windows 10、Linux Mint 和 Debian 上复制了同样的问题。

完整代码在此处的仓库中:https://github.com/maphew/scraps/tree/master/bug-dist-not-found

【问题讨论】:

    标签: python setup.py


    【解决方案1】:

    我也遇到了同样的问题。问题是代码可以在一台计算机上运行,​​但不能在另一台计算机上运行。我也在使用我制造的轮子。无论如何,我找到的解决方案是升级 pip 和我的包。例如

    pip install --upgrade pip path/to/my_package
    

    重新安装了 pip 和我的包,然后入口点工作。

    【讨论】:

      【解决方案2】:

      如果您有问题中提到的类似问题,您也可能像我一样遇到名称不匹配的问题:

      setup.py

      #setup.py
      from setuptools import setup
      
      setup(name='my_project',
          version='0.1.0',
          packages=['my_project'],
          entry_points={
              'console_scripts': [
                  'my_project = my_project.__main__:main'
              ]
           },
          install_requires=[
              'req.lib',  # correct name req-lib
          ]
      )
      

      有趣的是,在我的情况下pip install -e . 并没有抱怨这个错误,但是我在执行过程中遇到了一个错误,如下所示:

      pkg_resources.DistributionNotFound:“req.lib”分发未找到,应用程序需要此分发

      导入不是问题,命名正确的方式如下:

      import req.lib
      

      我的包是“azure-identity”:)

      使用 pip 的安装与 pkg_resources 相比确实具有不同的容忍度。

      【讨论】:

        猜你喜欢
        • 2016-02-14
        • 1970-01-01
        • 2018-04-26
        • 1970-01-01
        • 1970-01-01
        • 2020-10-02
        • 2011-02-07
        • 2013-11-20
        • 1970-01-01
        相关资源
        最近更新 更多