python没有安装setuptools的install_requires中列出的依赖项

jmt*_*ung 12 python pip setuptools

我写了一个依赖于openpyxl的python模块.我希望使用setuptools自动将openpxyl安装为依赖项.我读到正确的方法是在setup.py脚本中包含以下内容:

setup(name='methpipe',
    version=find_version("lala", "__init__.py"),
    description='Utilities',
    author='Jonathan T',
    author_email='jt@lala.com',
    url='https://git.com...',
    packages=find_packages(),
    install_requires=[
        'openpxyl = 2.3.3',
    ],
    scripts=["bin/submit_run_full.py"],
    cmdclass=dict(install=my_install)
)
Run Code Online (Sandbox Code Playgroud)

所以我打包了我的模块python setup.py sdist,拿了*.tar.gz文件,解压缩它,然后运行python setup.py install,并且openpyxl没有安装!

我在这做错了什么?

小智 5

尝试在install_requires和 中提供您的依赖项setup_requires

以下来自https://pythonhosted.org/setuptools/setuptools.htmlsetuptool的文档

setup_requires

一个字符串或字符串列表,指定需要存在哪些其他发行版才能运行安装脚本。setuptools 将在处理其余的安装脚本或命令之前尝试获取这些(甚至使用 EasyInstall 下载它们)。如果您在构建过程中使用 distutils 扩展,则需要此参数;例如,处理 setup() 参数并将它们转换为 EGG-INFO 元数据文件的扩展。

(注意:setup_requires 中列出的项目不会自动安装在运行安装脚本的系统上。如果它们在本地不可用,它们只需下载到 ./.eggs 目录。如果你想安装它们,以及在运行安装脚本时可用,您应该将它们添加到 install_requires 和 setup_requires。)

  • setup_requires 是“我在构建时需要这个”,而 install_requires 是“我在运行时需要这个依赖”。在两个地方复制它们通常不是正确的做法 (2认同)