折腾了好几天,始终无法让 hikyuu 跑起来,心情大受打击,估计是哪里没注意到,详细记录过程如下,请大神不吝指点。
安装思路:
下面的尝试过程,在三台 Windows 10 电脑上进行了测试,结果基本是一样的:在 Python 3.10 上无法完成安装,在 Python 3.8 和 3.9 上无法启动数据导入工具,在 Python 3.7 上可运行数据导入工具,但无法成功导入数据。
采用 Python 3.10 无法完成安装,提示 Failed to build pynng
:
(base) C:\Users\dc1y>conda create -n hky310 python=3.10
(base) C:\Users\dc1y>conda activate hky310
(hky310) C:\Users\dc1y>pip install hikyuu
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting hikyuu
Using cached https://pypi.tuna.tsinghua.edu.cn/packages/e1/2d/56a0f3d8371e12efcf7faf95c657bfe9996edeb1a87cf3a28f1f35b1ad4a/hikyuu-1.2.3-cp310-none-win_amd64.whl (9.2 MB)
............ 省略 ............
Building wheels for collected packages: pynng
Building wheel for pynng (setup.py) ... error
ERROR: Command errored out with exit status 1:
command: 'D:\AppData\Anaconda3\envs\hky310\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\dc1y\\AppData\\Local\\Temp\\pip-install-rd8dkl7r\\pynng_bfe752bf21f74bfb87d563d87667f3b4\\setup.py'"'"'; __file__='"'"'C:\\Users\\dc1y\\AppData\\Local\\Temp\\pip-install-rd8dkl7r\\pynng_bfe752bf21f74bfb87d563d87667f3b4\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\dc1y\AppData\Local\Temp\pip-wheel-peblryxl'
cwd: C:\Users\dc1y\AppData\Local\Temp\pip-install-rd8dkl7r\pynng_bfe752bf21f74bfb87d563d87667f3b4\
Complete output (7 lines):
D:\AppData\Anaconda3\envs\hky310\lib\site-packages\setuptools\installer.py:27: SetuptoolsDeprecationWarning: setuptools.installer is deprecated. Requirements should be satisfied by a PEP 517 installer.
warnings.warn(
running bdist_wheel
running build
running build_py
error: [WinError 2] 系统找不到指定的文件。
building mbedtls with: ['cmake', '-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true', '-A', 'x64', '-DENABLE_PROGRAMS=OFF', '-DCMAKE_BUILD_TYPE=Release', '-DCMAKE_INSTALL_PREFIX=../prefix', '..']
----------------------------------------
ERROR: Failed building wheel for pynng
Running setup.py clean for pynng
Failed to build pynng
在 pypi.org 上搜索 pynng,发现其 Build Distribution 最高支持到 cp39,决定换 Python 3.9 试试看……
采用 Python 3.9 可顺利完成 hikyuu 的安装,不报错:
(base) C:\Users\dc1y>conda create -n hky39 python=3.9
(base) C:\Users\dc1y>conda activate hky39
(hky39) C:\Users\dc1y>pip install hikyuu
Collecting hikyuu
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/b0/49/770eea6afd27c0b92dcfb3fcca3707a2e1cf05c5d1a5c42304a6913b6557/hikyuu-1.2.3-cp39-none-win_amd64.whl (9.2 MB)
............ 省略 ............
安装 TA_Lib(先下载对应版本、并移动到用户目录下):
(hky39) C:\Users\dc1y>pip install TA_Lib-0.4.24-cp39-cp39-win_amd64.whl
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Processing c:\users\dc1y\ta_lib-0.4.24-cp39-cp39-win_amd64.whl
Requirement already satisfied: numpy in c:\users\dc1y\appdata\roaming\python\python39\site-packages (from TA-Lib==0.4.24) (1.22.3)
Installing collected packages: TA-Lib
Successfully installed TA-Lib-0.4.24
开始测试导入数据 —— 短暂出现等待光标后,没有任何反应,并回到命令提示符:
(hky39) C:\Users\dc1y>HikyuuTDX.exe
(hky39) C:\Users\dc1y>
改用 importdata,提示 ImportError: DLL load failed while importing utilsextension: 找不到指定的模块
后,退出 Hikyuu 系统。
(hky39) C:\Users\dc1y>importdata.exe
Initialize hikyuu_1.2.3_202203061739_x64_release ...
2022-05-14 10:49:18,376 [INFO] Note: NumExpr detected 12 cores but "NUMEXPR_MAX_THREADS" not set, so enforcing safe limit of 8. [numexpr.utils::_init_num_threads]
2022-05-14 10:49:18,376 [INFO] NumExpr defaulting to 8 threads. [numexpr.utils::_init_num_threads]
Traceback (most recent call last):
File "D:\AppData\Anaconda3\envs\hky39\lib\runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "D:\AppData\Anaconda3\envs\hky39\lib\runpy.py", line 87, in _run_code
exec(code, run_globals)
File "D:\AppData\Anaconda3\envs\hky39\Scripts\importdata.exe\__main__.py", line 4, in <module>
File "D:\AppData\Anaconda3\envs\hky39\lib\site-packages\hikyuu\gui\importdata.py", line 15, in <module>
from hikyuu.gui.data.UseTdxImportToH5Thread import UseTdxImportToH5Thread
File "D:\AppData\Anaconda3\envs\hky39\lib\site-packages\hikyuu\gui\data\UseTdxImportToH5Thread.py", line 29, in <module>
from hikyuu.gui.data.ImportTdxToH5Task import ImportTdxToH5Task
File "D:\AppData\Anaconda3\envs\hky39\lib\site-packages\hikyuu\gui\data\ImportTdxToH5Task.py", line 30, in <module>
from hikyuu.data.tdx_to_h5 import tdx_import_data as h5_import_data
File "D:\AppData\Anaconda3\envs\hky39\lib\site-packages\hikyuu\data\tdx_to_h5.py", line 32, in <module>
import tables as tb
File "D:\AppData\Anaconda3\envs\hky39\lib\site-packages\tables\__init__.py", line 45, in <module>
from .utilsextension import get_hdf5_version as _get_hdf5_version
ImportError: DLL load failed while importing utilsextension: 找不到指定的模块。
Quit Hikyuu system!
(hky39) C:\Users\dc1y>
按 fasiondog 提示直接运行 HikyuuTDX.py,出现与前面基本相同的错误(ImportError: DLL load failed while importing utilsextension: 找不到指定的模块
):
(hky39) D:\AppData\Anaconda3\envs\hky39\Lib\site-packages\hikyuu\gui>python HikyuuTDX.py
Initialize hikyuu_1.2.3_202203061739_x64_release ...
2022-05-14 11:04:23,262 [INFO] Note: NumExpr detected 12 cores but "NUMEXPR_MAX_THREADS" not set, so enforcing safe limit of 8. [numexpr.utils::_init_num_threads]
2022-05-14 11:04:23,262 [INFO] NumExpr defaulting to 8 threads. [numexpr.utils::_init_num_threads]
Traceback (most recent call last):
File "D:\AppData\Anaconda3\envs\hky39\Lib\site-packages\hikyuu\gui\HikyuuTDX.py", line 23, in <module>
from hikyuu.gui.data.UseTdxImportToH5Thread import UseTdxImportToH5Thread
File "D:\AppData\Anaconda3\envs\hky39\lib\site-packages\hikyuu\gui\data\UseTdxImportToH5Thread.py", line 29, in <module>
from hikyuu.gui.data.ImportTdxToH5Task import ImportTdxToH5Task
File "D:\AppData\Anaconda3\envs\hky39\lib\site-packages\hikyuu\gui\data\ImportTdxToH5Task.py", line 30, in <module>
from hikyuu.data.tdx_to_h5 import tdx_import_data as h5_import_data
File "D:\AppData\Anaconda3\envs\hky39\lib\site-packages\hikyuu\data\tdx_to_h5.py", line 32, in <module>
import tables as tb
File "D:\AppData\Anaconda3\envs\hky39\lib\site-packages\tables\__init__.py", line 45, in <module>
from .utilsextension import get_hdf5_version as _get_hdf5_version
ImportError: DLL load failed while importing utilsextension: 找不到指定的模块。
Quit Hikyuu system!
几个月前 fasiondog 曾提示过用 Py38 尝试……
顺利完成 hikyuu 和 TA_Lib 的安装:
(base) C:\Users\dc1y>conda create -n hky38 python=3.8
(base) C:\Users\dc1y>conda activate hky38
(hky38) C:\Users\dc1y>pip install hikyuu
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting hikyuu
Using cached https://pypi.tuna.tsinghua.edu.cn/packages/da/6b/f6f963b84f3f3182dddb8796f69d7b71504f94509a95808b8c6b99f57c3a/hikyuu-1.2.3-cp38-none-win_amd64.whl (9.2 MB)
............ 省略 ............
(hky38) C:\Users\dc1y>pip install TA_Lib-0.4.24-cp38-cp38-win_amd64.whl
............ 省略 ............
Successfully installed TA-Lib-0.4.24
测试导入数据,从 HikyuuTDX、importdata 到直接运行 HikyuuTDX.py,出错的现象和信息与采用 Python 3.9 的上一次尝试完全一样:
(hky38) C:\Users\dc1y>HikyuuTDX.exe
............ 无法启动图形界面 ............
(hky38) C:\Users\dc1y>importdata.exe
Initialize hikyuu_1.2.3_202203061816_x64_release ...
............ 省略 ............
ImportError: DLL load failed while importing utilsextension: 找不到指定的模块。
Quit Hikyuu system!
(hky38) D:\AppData\Anaconda3\envs\hky38\Lib\site-packages\hikyuu\gui>python hikyuutdx.py
Initialize hikyuu_1.2.3_202203061816_x64_release ...
............ 省略 ............
ImportError: DLL load failed while importing utilsextension: 找不到指定的模块。
Quit Hikyuu system!
hikyuu 和 TA_Lib 安装没问题:
(base) C:\Users\dc1y>conda create -n hky37 python=3.7
(base) C:\Users\dc1y>conda activate hky37
(hky37) C:\Users\dc1y>pip install hikyuu
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting hikyuu
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/61/fc/34aeeb12714d434f72b48454409ad83187f976efd90ec4a9ed7ee0e338d4/hikyuu-1.2.0-cp37-none-win_amd64.whl (9.0 MB)
............ 省略 ............
(hky37) C:\Users\dc1y>pip install TA_Lib-0.4.24-cp37-cp37m-win_amd64.whl
............ 省略 ............
Successfully installed TA-Lib-0.4.24
测试导入数据……
(hky37) C:\Users\dc1y>HikyuuTDX.exe
这一次终于启动了图形界面的数据导入工具 —— 在“存储设置”中指定的数据存放路径后,其余选项保持默认值,进入“执行导入”点击“手工执行导入”,然而……没有进度,并且无法退出(只能通过任务管理器强行关闭):
控制台日志如下:
2022-05-14 11:43:26,517 [INFO] - 搜索通达信服务器 [UsePytdxImportToH5Thread::init_task]
2022-05-14 11:43:26,525 [DEBUG] - connecting to server : 180.153.18.172 on port :80 [PYTDX::connect]
2022-05-14 11:43:26,525 [DEBUG] - connecting to server : 202.108.253.130 on port :7709 [PYTDX::connect]
...
2022-05-14 11:43:26,547 [DEBUG] - connected! [PYTDX::connect]
2022-05-14 11:43:26,547 [DEBUG] - connected! [PYTDX::connect]
...
2022-05-14 11:43:26,578 [DEBUG] - 需要解压 [PYTDX::_call_api]
2022-05-14 11:43:26,578 [DEBUG] - connected! [PYTDX::connect]
2022-05-14 11:43:26,578 [DEBUG] - 需要解压 [PYTDX::_call_api]
2022-05-14 11:43:26,578 [DEBUG] - connected! [PYTDX::connect]
...
2022-05-14 11:43:26,625 [DEBUG] - 不需要解压 [PYTDX::_call_api]
2022-05-14 11:43:26,625 [DEBUG] - last ack time update to 1652499806.6254387 [PYTDX::wrapper]
2022-05-14 11:43:26,625 [DEBUG] - sending thread lock api call [PYTDX::call_api]
2022-05-14 11:43:26,625 [DEBUG] - 需要解压 [PYTDX::_call_api]
...
2022-05-14 11:43:26,641 [DEBUG] - disconnecting [PYTDX::disconnect]
2022-05-14 11:43:26,641 [DEBUG] - disconnected [PYTDX::disconnect]
2022-05-14 11:43:26,641 [DEBUG] - connecting to server : 183.57.72.22 on port :7709 [PYTDX::connect]
...
2022-05-14 11:43:27,533 [DEBUG] - connection expired [PYTDX::connect]
2022-05-14 11:43:27,533 [DEBUG] - connection expired [PYTDX::connect]
...
2022-05-14 11:43:28,205 [INFO] - 导入股票代码表 [UsePytdxImportToH5Thread::_run]
2022-05-14 11:43:29,455 [DEBUG] - connecting to server : 119.29.19.242 on port :7709 [PYTDX::connect]
...
2022-05-14 11:43:30,955 [DEBUG] - hit exception on req exception is 'gbk' codec can't decode byte 0xbb in position 7: incomplete multibyte sequence [PYTDX::wrapper]
...
2022-05-14 11:43:31,283 [INFO] - 深证新增股票数: 3045 [UsePytdxImportToH5Thread::_run]
至此,已暂时想不出其它办法,有劳诸位大神指点了。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
感谢大神指点!安装 pytables 后,可以在 Python 3.9 上通过 importdata.exe 来导入数据了(图形界面的 HikyuuTDX.exe 挂了半个小时,进度条仍然没有动静)
用 importdata 可以导入数据了,但 GUI 数据导入工具始终无进度,数据存储位置中也未创建数据文件,不知是否与 hikyuu.ini 中的乱码有关?
没有关系。这个是pyqt5版本的问题,把spyder、pyqt5卸载,用 pip 重装 pyqt5 试下,不行我也没办法,完全不知道你们的环境,我这从没碰到过
试过了,没有效果——暂时先用 importdata 吧
目前尝试出来打开hikyuutdx有三个条件:1)conda install python=3.8; 2)本地安装好ta lib, 下载whl后shift 右键 pip install 【talib文件名】.whl ;3)pip install pyqt5和pyqt5-tools
然后 在hikyuutdx.exe运行过程中我也遇到了 其他帖子中类似的问题 例如tdqm 的fq.write对象出问题 none type没有write 属性之类的,这个怀疑是tdqm的版本问题,从而导致进度条不动;以及 最后遇到[ERROR] - Exception: All process is finished, but some tasks are running!这个bug.
但是在完成上述三个条件后,使用importdata没有问题,顺利完成导入
import progress: 96% - 日线数据 - 已耗时 12.87 分钟
import progress: 97% - 日线数据 - 已耗时 13.29 分钟
import progress: 98% - 日线数据 - 已耗时 13.77 分钟
import progress: 99% - 日线数据 - 已耗时 14.21 分钟
2023-12-25 22:05:29,118 [INFO] 导入 SZ DAY 记录数: 9292063 [ImportPytdxToH5::call]
import progress: 100% - 日线数据 - 已耗时 14.71 分钟
2023-12-25 22:05:29,119 [INFO] 导入完毕 [UsePytdxImportToH5Thread::run]
导入完毕, 共耗时 14.71 分钟
Quit Hikyuu system!
登录 后才可以发表评论