【问题标题】:python is not installing dependencies listed in install_requires of setuptoolspython 没有安装 setuptools 的 install_requires 中列出的依赖项
【发布时间】:2016-06-01 15:51:49
【问题描述】:

我写了一个依赖于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)
)

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

我在这里做错了什么?

【问题讨论】:

  • 安装日志没有错误吗?
  • 我想你想做openpyxl==2.3.3

标签: python pip setuptools


【解决方案1】:

尝试在install_requiressetup_requires 中提供您的依赖项。

以下内容来自setuptoolhttps://pythonhosted.org/setuptools/setuptools.html 的文档

设置要求

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

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

【讨论】:

  • setup_requires 是“我在构建时需要这个”,而 install_requires 是“我在运行时需要这个依赖项”。在两个地方复制它们通常不是正确的做法
【解决方案2】:

我注意到当您使用“cmdclass”键覆盖“安装”时。下面的模式也给我留下了卸载的依赖项。

Custom_Install(install):
    def run(self):
        # some custom commands
        install.run(self) 

将依赖项添加到 setup_requires 对我不起作用,所以最后我只是在自定义安装命令中进行了自己的 pip 安装..

def pip_install(package_name):
    subprocess.call(
        [sys.executable, '-m', 'pip', 'install', package_name]
    )

【讨论】:

    【解决方案3】:

    使用 sdist 构建源代码分发,所以我认为这是正常的 taht 依赖项没有与您的源代码打包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-02
      • 2010-11-18
      • 2013-08-30
      • 2014-06-28
      • 2016-05-27
      • 2012-02-01
      • 2019-04-21
      • 1970-01-01
      相关资源
      最近更新 更多