【问题标题】:ta-lib replit python install problem, ERROR: No matching distribution found for talib-binaryta-lib replit python 安装问题,ERROR: No matching distribution found for talib-binary
【发布时间】:2022-12-19 20:32:07
【问题描述】:

我通过下载它的二进制文件在我的 Windows 机器上使用它。我还在 Heroku 的 herokus 构建包中使用它。我不知道 replit 使用什么操作系统。但我尝试了每一种可能的方式。

!pip install ta-lib

!pip install talib-binary

它不适用于 replit。我认为它像谷歌合作实验室一样工作,但不一样。

任何人都可以将 TA-LIB 与 replit 一起使用吗?如果是这样。你如何安装它?

【问题讨论】:

  • 我刚刚尝试了 replit,并且能够从源代码中为它构建 ta-lib 库和 python 包。这很棘手,但我会尝试编写一个有效的分步指南

标签: python ta-lib replit


【解决方案1】:

让 TA-Lib 在 Replit 上工作(通过从源安装)

  1. 使用带有 Python 模板的 Nix 工具集创建一个新的 replit。 在 main.py 中写入:

    import talib
    print (talib.__ta_version__)
    

    这将是我们的测试用例。如果安装了 ta-lib python main.py(在) 将返回如下内容:

    $ python main.py 
    b'0.6.0-dev (Jan  1 1980 00:00:00)'
    

    我们需要准备一个工具来构建 TA-Lib 源代码。在您的项目的根文件夹中有一个 replit.nix 文件(在我的例子中是 ~/BrownDutifulLinux)。每次执行类似cmake 的命令时,Nix 都会报告:

    cmake: command not installed. Multiple versions of this command were found in Nix.
    Select one to run (or press Ctrl-C to cancel):
    
    cmake.out
    cmakeCurses.out
    cmakeWithGui.out
    cmakeMinimal.out
    cmake_2_8.out
    

    如果您选择 cmake.out,它将在 replit.nix 文件中添加一条关于它的记录。下次调用 cmake 时,它​​会知道要启动哪个 cmake 版本。也许您可以手动编辑 replit.nix 文件...但是如果您要以我的方式添加此类命令,请注意您必须在项目根文件夹中的 Shell 中执行它们,因为 replit.nix 文件位于其中。否则尼克斯不会记住你的选择。

    毕竟我的replit.nix文件(你可能会看到它的内容是cat replit.nix)内容是:

    { pkgs }: {
      deps = [
        pkgs.libtool
        pkgs.automake
        pkgs.autoconf
        pkgs.cmake
        pkgs.python38Full
      ];
      env = {
        PYTHON_LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [
          # Needed for pandas / numpy
          pkgs.stdenv.cc.cc.lib
          pkgs.zlib
          # Needed for pygame
          pkgs.glib
          # Needed for matplotlib
          pkgs.xorg.libX11
        ];
        PYTHONBIN = "${pkgs.python38Full}/bin/python3.8";
        LANG = "en_US.UTF-8";
      };
    }
    

    这意味着我在 Shell 中执行了 libtoolautoconfautomakecmake。我总是选择 Nix 的通用建议,没有特定版本。注意:一些命令可能会报告错误,因为我们以错误的方式执行它们只是为了添加到replit.nix

    3. 设置构建工具后,我们需要获取并构建 TA-Lib C 库源。为此,请在 Shell 中执行:

    git clone https://github.com/TA-Lib/ta-lib.git
    

    然后

    cd ta-lib/
    
    libtoolize
    autoreconf --install
    
    ./configure
    

    如果 configure 脚本没有任何问题地完成,使用以下命令构建库:

    make -j4
    

    它最终会出现一些编译错误,但它们与一些额外的工具有关,这些工具用于添加新的 TA-Lib 指标并在最后构建,但与库本身无关。该库将被成功编译,您应该能够看到它:

    $ ls ./src/.libs/
    libta_lib.a   libta_lib.lai  libta_lib.so.0
    libta_lib.la  libta_lib.so   libta_lib.so.0.0.0
    

    现在我们已经构建了 C 库,但是我们无法将它安装到系统默认文件夹中。因此,我们必须按原样使用构建文件夹中的库。我们所需要的只是一个额外的准备:

    mkdir ./include/ta-lib
    cp ./include/*.h ./include/ta-lib/
    

    这会将库标头复制到子文件夹,因为它们旨在从此类子文件夹中使用(由于无法执行安装步骤,它们没有)。

    4. 现在我们已经构建了 TA-Lib C 库,并准备好从其构建文件夹中在本地使用。之后我们所需要的就是为它编译 Python 包装器。但是 Python 包装器只会在系统默认文件夹中查找库,因此我们需要指示它我们的库所在的位置。
    为此,执行pwd 并记住项目根文件夹的绝对路径。在我的例子中是:
    /home/runner/FormalPleasedOffice

    然后在以下命令中调整路径(有两个)以引导您的项目路径: TA_INCLUDE_PATH=/home/runner/FormalPleasedOffice/ta-lib/include/ TA_LIBRARY_PATH=/home/runner/FormalPleasedOffice/ta-lib/src/.libs/ pip install ta-lib

    这是一行命令,而不是两条命令。如果路径更短,它看起来像:
    TA_INCLUDE_PATH=/path1/ TA_LIBRARY_PATH=/path2/ pip install ta-lib

    执行此命令后,包装器将安装两个额外的路径,它将在其中查找库及其头文件。

    实际上就是这样。 另一种方法是克隆包装器源,编辑其 setup.py 并手动安装包装器。仅作记录,这将是:

    cd ~/Your_project
    git clone https://github.com/mrjbq7/ta-lib.git ta-lib-wrapper
    cd ta-lib-wrapper
    

    在这里编辑 setup.py。找到行 include_dirs = [library_dirs = [ 并将您的路径附加到这些列表。然后你只需要:

    python setup.py build
    pip install .
    

    注意末尾的点。

    5. 转到项目的文件夹并尝试我们的 python 脚本:

    $python main.py
    b'0.6.0-dev (Jan  1 1980 00:00:00)'
    

    答对了!

【讨论】:

  • 它说“[-Werror=format-security]”,在 make“make -j4”之后说“make: *** [Makefile:457: all-recursive] Error 1”。
  • 那没有任何意义。尽可能多地复制输出并粘贴到 pastebin.com 查看 ./configure 的输出也很有帮助
  • pastebin.com/3v15zDZx 这是错误。
  • make -j4 之后的第 3 步,我解释了为什么构建过程以错误结束以及为什么可以忽略它。特别是它:make[2]: *** [Makefile:386: gen_code-gen_code.o] Error 1 - 可以忽略的错误。你只需要继续说明。
  • TA_INCLUDE_PATH=/home/runner/FormalPleasedOffice/ta-lib/include/ TA_LIBRARY_PATH=/home/runner/FormalPleasedOffice/ta-lib/src/.libs/ pip install ta-lib - 是一行命令,而不是两行命令。如果路径更短,它看起来像TA_INCLUDE_PATH=/path1/ TA_LIBRARY_PATH=/path2/ pip install ta-lib。我会在说明中添加关于此的注释。
【解决方案2】:

@truf 的回答是正确的。

添加后

pkgs.libtool
pkgs.automake
pkgs.autoconf
pkgs.cmake

在 replit.nix dippendancies 中。

  1. 混帐克隆https://github.com/TA-Lib/ta-lib.git

  2. cd ta-lib/

  3. libtoolize

  4. autoreconf --install

  5. 。/配置

  6. 制作-j4

  7. mkdir ./include/ta-lib

  8. cp ./include/*.h ./include/ta-lib/

  9. TA_INCLUDE_PATH=/home/runner/FormalPleasedOffice/ta-lib/include/ TA_LIBRARY_PATH=/home/runner/FormalPleasedOffice/ta-lib/src/.libs/ pip install ta-lib

    笔记 :正式高兴办公室应该是你的项目名称

    完毕。

    这是 youtube 视频: https://www.youtube.com/watch?v=u20y-nUMo5I

【讨论】:

    猜你喜欢
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 2020-05-05
    • 2020-06-14
    相关资源
    最近更新 更多