排除pkg_resources.DistributionNotFound错误

时间:2018-09-17 21:06:12

标签: python setup.py

为什么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。通过使用--prefix来解决Q。那对我没有用。我已经在Windows 10,Linux Mint和Debian上复制了相同的问题。

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

2 个答案:

答案 0 :(得分:1)

我只是遇到了同样的问题。麻烦在于该代码只能在一台计算机上运行,​​而不能在另一台计算机上运行。另外,我正在使用自己制造的车轮。无论如何,我发现的解决方案是升级pip和我的包裹。例如

pip install --upgrade pip path/to/my_package

那重新安装了pip和我的软件包,然后入口点起作用了。

答案 1 :(得分:0)

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

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 相比肯定有不同的容差。