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

为什么没有在setup.py中指定pip install dependencies?

  •  2
  • alliedtoasters  · 技术社区  · 6 年前

    我用setup.py构建了一个python包,看起来像:

    from setuptools import setup, find_packages
    
    setup(
         name='my_package',
         version='0.1',
         url='https://github.com/me/my_package',
         download_url='https://github.com/dwnlod.tar.gz',
         author='me',
         author_email='myname@email.com',
         license='MIT',
         packages=['my_package'],
         install_requires=[
             'numpy',
             'other_package'
         ]
    )
    

    当我使用

    pip install .
    

    pip安装install_所需的所有依赖项。但是,当我通过pypi注册包时,使用

    pip install my_package
    

    pip不安装依赖项。(我是在一个新的环境中完成的,所以软件包尚未安装;安装失败。)发生了什么?通过阅读文档,它看起来像

         install_requires=[
             'numpy==1.14.1',
             'other_package==ve.rs.ion'
         ]
    

    可能工作得更好,因为指定了版本。这可能是问题所在吗?

    以下是回购协议的链接:

    PyCDA on GitHub
    PyCDA on PyPI

    1 回复  |  直到 6 年前
        1
  •  3
  •   jwodder    6 年前

    你的 setup.py 包含以下行:

    path = pkg_resources.resource_filename('pycda', 'models/tinynet.h5')
    

    根据我在安装你的软件包时得到的回溯,这个调用 pkg_resources 尝试导入您的包,但您的包导入 numpy . 因为 麻木的 无法安装,除非pip知道它是依赖项,并且因为它不运行就无法知道它是依赖项 安装程序.py ,因为 安装程序.py 不先做上面的就不能跑 包装资源 打电话来,我们的结果是 麻木的 在我们知道它是必需的之前是必需的;因此,是错误的。解决方案是删除上面的行,这应该很容易,因为 path 变量甚至都不用!