使用带有 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 中执行了 libtool、autoconf、automake 和 cmake。我总是选择 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)'
答对了!