thinh-vu / vnstock

A powerful Python library for getting rich data from the Vietnam Stock Market using just a few lines of code
https://vnstocks.com
Other
499 stars 130 forks source link

Không thể import thư viện #107

Closed EuphoriaCelestial closed 8 months ago

EuphoriaCelestial commented 8 months ago

Mô tả lỗi Không thể import thư viện, báo lỗi TypeError: 'type' object is not subscriptable

Cách tái hiện lại lỗi để xử lý Các bước để tái hiện sự cố:

  1. Chạy lệnh cài đặt: pip install vnstock
  2. Sử dụng Pycharm hoặc Jupyter Notebook, chạy code mẫu của tác giả (https://colab.research.google.com/github/thinh-vu/vnstock/blob/beta/docs/gen2_vnstock_demo_index_all_functions_testing_2023.ipynb#scrollTo=kfKcYDxc6wlu)
  3. Gặp lỗi

Mong muốn đạt được Code chạy bình thường.

** Screenshot image

Máy tính để bàn (vui lòng cung cấp thông tin sau):

thinh-vu commented 8 months ago

Cám ơn bạn đã chia sẻ. Lỗi này hiện không xuất hiện với Google Colab. Mình sẽ kiểm tra thêm với môi trường local như bạn mô tả. @andrey-jef ơi, bạn có thể giúp mình xem chi tiết lỗi này với nhé. Như phần báo lỗi có liên quan đến module funds.py. Cám ơn bạn!

andrey-jef commented 8 months ago

@thinh-vu local env của b OP đang là python 3.8. Vnstock đang hỗ trợ cài đặt mặc định là python 3.9 trong requirements

từ 3.9 thì list là built-in class nên m và b test sẽ ko thấy lỗi này

Có 2 giải pháp: 1/ là OP update python lên 3.9 trong venv của b ấy 2/ nếu vẫn muốn dùng 3.8 thì cần thêm câu lệnh này vào trước khi import vnstock from typing import List

m chưa test thử cái m nói. Nhưng logic m hiểu thì chỉ có thể là trường hợp như vậy thôi

EuphoriaCelestial commented 8 months ago

mình thử cách 1 thì đã chạy được, còn cách 2 vẫn bị lỗi trong file setup.cfg mình thấy để python>=3.7, chắc cần sửa lại, và add bs4 vào file requirements.txt nữa

DangThuy-97 commented 8 months ago

Code mẫu mình chạy thử trên VSC cũng báo lỗi ạ. Python mình bản 3.12.0

image

andrey-jef commented 8 months ago

Code mẫu mình chạy thử trên VSC cũng báo lỗi ạ. Python mình bản 3.12.0

Hi @DangThuy-97

m ko tái hiện được lỗi này trên vnstock 0.2.8.7

Với câu lệnh

company_insider_deals (symbol='FPT', page_size=20, page=0)

Thì có kết quả trả về như mong đợi

   ticker dealAnnounceDate        dealMethod dealAction  dealQuantity  \
0     FPT       2023-10-12    Cổ đông nội bộ        Bán    -2250000.0   
1     FPT       2023-10-12  Cổ đông sáng lập        Mua      550000.0   
2     FPT       2023-10-03  Cổ đông sáng lập        Mua      500000.0   
3     FPT       2023-10-02  Cổ đông sáng lập        Mua      250000.0   
4     FPT       2023-10-02  Cổ đông sáng lập        Mua      500000.0   
5     FPT       2023-08-29       Cổ đông lớn        Mua       20000.0   
6     FPT       2023-08-29       Cổ đông lớn        Mua       68600.0   
7     FPT       2023-08-29       Cổ đông lớn        Mua      495000.0   
8     FPT       2023-07-31    Cổ đông nội bộ        Bán    -4000000.0   
14    FPT       2023-05-11    Cổ đông nội bộ        Mua      220993.0   
17    FPT       2023-05-11    Cổ đông nội bộ        Mua      520645.0   
16    FPT       2023-05-11    Cổ đông nội bộ        Mua      470289.0   
15    FPT       2023-05-11    Cổ đông nội bộ        Mua      340628.0   
10    FPT       2023-05-11    Cổ đông nội bộ        Mua       59419.0   
13    FPT       2023-05-11    Cổ đông nội bộ        Mua      178048.0   
12    FPT       2023-05-11    Cổ đông nội bộ        Mua       75912.0   
11    FPT       2023-05-11    Cổ đông nội bộ        Mua       72580.0   
9     FPT       2023-05-11    Cổ đông nội bộ        Mua       16129.0   
18    FPT       2023-02-17    Cổ đông nội bộ        Bán      -70000.0   
19    FPT       2022-12-27       Cổ đông lớn        Mua           0.0   

    dealPrice  dealRatio  
0     96400.0     -0.003  
1     96400.0     -0.003  
2     92200.0      0.042  
3     93200.0      0.031  
4     93200.0      0.031  
5     93600.0      0.027  
6     93600.0      0.027  
7     93600.0      0.027  
8     84607.0      0.136  
14    67206.0      0.430  
17    67206.0      0.430  
16    67206.0      0.430  
15    67206.0      0.430  
10    67206.0      0.430  
13    67206.0      0.430  
12    67206.0      0.430  
11    67206.0      0.430  
9     67206.0      0.430  
18    69330.0      0.386  
19    64997.0      0.479  
thinh-vu commented 8 months ago

Các bạn có thể hot fix lỗi này trong package của vnstock trên máy của bạn như sau. Mình đã test trên Raspberry Pi 4

  1. Mở terminal/command prompt chạy lệnh sau để mở thư mục python package: python -m site --user-site , Lưu ý: nếu máy bạn chạy nhiều hơn 1 bản python (Windows) hoặc trên linux có thể cần thay thế python thành python3.10 hoặc python3 tương ứng.
  2. Tìm thư mục vnstock trong thư mục package ở trên, ví dụ trong raspberry của mình là /home/pi/.local/lib/python3.8/site-packages/vnstock
  3. Mở file funds.py bằng Visual Studio hoặc bất kỳ text editor nào dưới dạng văn bản để chỉnh sửa.
  4. Thay thế đoạn code từ dòng 1 đến 16 với đoạn code sau:
    
    from .config import *
    from typing import List

UTILS

def convert_unix_to_datetime(df_to_convert: pd.DataFrame, columns: List[str]) -> pd.DataFrame:
"""Converts all the specified columns of a dataframe to date format and fill NaN for negative values.""" df = df_to_convert.copy() for col in columns: df[col] = pd.to_datetime(df[col], unit='ms', utc=True, errors='coerce').dt.strftime('%Y-%m-%d') df[col] = df[col].where(df[col].ge('1970-01-01')) return df


5. Lưu file và quay lại môi trường Python để chạy và import thử.

Các bạn làm thử và báo giúp mình nếu thành công hoặc lỗi trên máy của bạn.
![image](https://github.com/thinh-vu/vnstock/assets/39723360/1f56ff65-a559-44fc-be48-0a05f2ad9fbd)
Tụi mình sẽ xem xét lỗi này kỹ hơn sau lễ.
DangThuy-97 commented 8 months ago

Mình đã chạy Code được lại bình thường, cám ơn team rất nhiều !