Repository: milvus-io/pymilvus (language: python)

Issue:
[Bug]: Can not use poetry to install pymilvus >= 2.4
### Is there an existing issue for this?

- [X] I have searched the existing issues

### Describe the bug

create a new environment using poetry, execute in terminal `poetry add pymilvus=^2.4.3`, it will raise the following error,
![image](https://github.com/milvus-io/pymilvus/assets/45241093/0331b760-54b3-4c8d-b074-7dfa0ab2a57e)




### Expected Behavior

successfully install pymilvus with poetry 

### Steps/Code To Reproduce behavior

```markdown
1. create a new environment using poetry
2. execute in terminal `poetry add pymilvus=^2.4.3`
```


### Environment details

```markdown
- Hardware/Softward conditions (OS, CPU, GPU, Memory):
- Method of installation (Docker, or from source):
- Milvus version (v0.3.1, or v0.4.0):
- Milvus configuration (Settings you made in `server_config.yaml`):
```


### Anything else?

_No response_


Discussion / hints:
/assign @junjiejiangjjj 

/unassign
@yanliang567: GitHub didn't allow me to assign the following users: junjiejiangjjj.

Note that only [milvus-io members](https://github.com/orgs/milvus-io/people), repo collaborators and people who have commented on this issue/PR can be assigned. Additionally, issues/PRs can only have 10 assignees at the same time.
For more information please see [the contributor guide](https://git.k8s.io/community/contributors/guide/first-contribution.md#issue-assignment-in-github)

<details>

In response to [this](https://github.com/milvus-io/pymilvus/issues/2131#issuecomment-2167340201):

>/assign @junjiejiangjjj 
>
>/unassign


Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository.
</details>
@Raysilience 
what is your os system? It works well in my Mac
![image](https://github.com/milvus-io/pymilvus/assets/12268675/7a589570-ba34-4a24-b7cf-c69afd1782ae)

pymilvus 2.3.4 includes a milvus-lite lib, and it is not supported in windows.
@zhuwenxing Mine is windows. Then how to exclude the milvus-lite while installing pymilvus.



> @zhuwenxing Mine is windows. Then how to exclude the milvus-lite while installing pymilvus.

@XuanYang-cn @junjiejiangjjj 
any advice?
@zhuwenxing @XuanYang-cn @junjiejiangjjj  I check the pyproject.toml file. Maintainers list the milvus-lite inside the dependencies that leads to mandatory installation. This will definitely affect the developers operating on windows who are also using poetry to manage their projects. Would you consider moving the milvus-lite to optional dependencies such that windows developers still have access to pymilvus while other users are still able to install milvus-lite via poetry add pymilvus[milvus-lite] i.e. 
[project.optional-dependencies]
milvus-lite = [
  "milvus-lite>=2.4.0",
]
If so, I could create a pr to solve it.

@Raysilience we want "milvus-lite" to be the default dependency of pymilvus. So "No" for change it to optional dependencies for all platform.

However making it optional for Windows platform ONLY might  be possible. Can you investigate and create a pr for it? I'll do some investigation myself too.
@XuanYang-cn Sure, I find out that poetry supports environment marker which might be suitable for the current case. I will give it a try, and if it works I will create a pr

Fix patch:
diff --git a/.github/workflows/check_milvus_proto.yml b/.github/workflows/check_milvus_proto.yml
index 5c4f2e307..00bf479c2 100644
--- a/.github/workflows/check_milvus_proto.yml
+++ b/.github/workflows/check_milvus_proto.yml
@@ -26,7 +26,7 @@ jobs:
     - name: Install dependencies
       run: |
         python -m pip install --upgrade pip
-        pip install -e .
+        pip install -e ".[dev]"
 
     - name: Try generate proto
       run: |
diff --git a/.github/workflows/code_checker.yml b/.github/workflows/code_checker.yml
index 10488b616..fa70b4722 100644
--- a/.github/workflows/code_checker.yml
+++ b/.github/workflows/code_checker.yml
@@ -19,7 +19,7 @@ jobs:
         uses: actions/setup-python@v5
         with:
           python-version: ${{ matrix.python-version }}
-      - name: check pyproject.toml install
+      - name: Check pyproject.toml install
         run: |
           pip install -e .
       - name: Install requirements
diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml
index 74389642a..78e8c20b1 100644
--- a/.github/workflows/pull_request.yml
+++ b/.github/workflows/pull_request.yml
@@ -8,10 +8,11 @@ on:
 jobs:
   build:
     name: Run Python Tests
-    runs-on: ubuntu-latest
     strategy:
       matrix:
         python-version: [3.8, 3.12]
+        os: [ubuntu-latest, windows-latest]
+    runs-on: ${{ matrix.os }}
 
     steps:
       - name: Checkout code
diff --git a/Makefile b/Makefile
index 2dfd51128..642fa4043 100644
--- a/Makefile
+++ b/Makefile
@@ -25,7 +25,7 @@ get_proto:
 	git submodule update --init
 
 gen_proto:
-	python3 -m pip install -e ".[dev]"
+	pip install -e ".[dev]"
 	cd pymilvus/grpc_gen && ./python_gen.sh
 
 check_proto_product: gen_proto
diff --git a/pyproject.toml b/pyproject.toml
index 53d56f2e2..54d339b4c 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -24,7 +24,7 @@ dependencies=[
     "ujson>=2.0.0",
     "pandas>=1.2.4",
     "numpy<1.25.0;python_version<='3.8'",
-    "milvus_lite>=2.4.0,<2.5.0",
+    "milvus-lite>=2.4.0,<2.5.0;sys_platform!='win32'",
 ]
 
 classifiers=[


Test patch:
diff --git a/tests/test_milvus_lite.py b/tests/test_milvus_lite.py
index ef4f49274..0149fd5bc 100644
--- a/tests/test_milvus_lite.py
+++ b/tests/test_milvus_lite.py
@@ -1,12 +1,14 @@
 import os
+import sys
 from tempfile import TemporaryDirectory
 import numpy as np
+import pytest
 
 from pymilvus.milvus_client import MilvusClient
 
 
+@pytest.mark.skipif(sys.platform.startswith('win'), reason="Milvus Lite is not supported on Windows")
 class TestMilvusLite:
-
     def test_milvus_lite(self):
         with TemporaryDirectory(dir='./') as root:
             db_file = os.path.join(root, 'test.db')