Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bug: Azure SQL Tests Fail in MacOS M1 #263

Open
dlmgary opened this issue Jun 28, 2024 · 2 comments
Open

bug: Azure SQL Tests Fail in MacOS M1 #263

dlmgary opened this issue Jun 28, 2024 · 2 comments
Labels
bug Something isn't working

Comments

@dlmgary
Copy link
Contributor

dlmgary commented Jun 28, 2024

Describe the bug

Tests in PyRIT/tests/memory/test_azure_sql_memory.py fail to run in MacOS.

Steps/Code to Reproduce

  • Install PyRIT in dev mode.
  • Initialize environment.
  • Run test_azure_sql_memory.py tests via: pytest tests/memory/test_azure_sql_memory.py

Expected Results

Test passing

Actual Results

ERROR                 [ 18%]
test setup failed
@pytest.fixture
    def memory_interface() -> Generator[AzureSQLMemory, None, None]:
>       yield from get_azure_sql_memory()

memory/test_azure_sql_memory.py:27: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
mocks.py:117: in get_azure_sql_memory
    azure_sql_memory = AzureSQLMemory(
../pyrit/common/singleton.py:21: in __call__
    cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
../pyrit/memory/azure_sql_memory.py:38: in __init__
    self.engine = self._create_engine(has_echo=verbose)
../pyrit/memory/azure_sql_memory.py:55: in _create_engine
    engine = create_engine(self._connection_string, echo=has_echo)
<string>:2: in create_engine
    ???
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/util/deprecations.py:281: in warned
    return fn(*args, **kwargs)  # type: ignore[no-any-return]
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/engine/create.py:599: in create_engine
    dbapi = dbapi_meth(**dbapi_args)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'sqlalchemy.dialects.mssql.pyodbc.MSDialect_pyodbc'>

    @classmethod
    def import_dbapi(cls) -> ModuleType:
>       return __import__("pyodbc")
E       ImportError: dlopen(/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so, 0x0002): Library not loaded: /usr/local/opt/unixodbc/lib/libodbc.2.dylib
E         Referenced from: <87BCBDCC-3D15-3E21-BD10-42E710460D5A> /Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so
E         Reason: tried: '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/lib/libodbc.2.dylib' (no such file), '/usr/lib/libodbc.2.dylib' (no such file, not in dyld cache)

/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/connectors/pyodbc.py:60: ImportError
ERROR               [ 18%]
test setup failed
@pytest.fixture
    def memory_interface() -> Generator[AzureSQLMemory, None, None]:
>       yield from get_azure_sql_memory()

memory/test_azure_sql_memory.py:27: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
mocks.py:117: in get_azure_sql_memory
    azure_sql_memory = AzureSQLMemory(
../pyrit/common/singleton.py:21: in __call__
    cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
../pyrit/memory/azure_sql_memory.py:38: in __init__
    self.engine = self._create_engine(has_echo=verbose)
../pyrit/memory/azure_sql_memory.py:55: in _create_engine
    engine = create_engine(self._connection_string, echo=has_echo)
<string>:2: in create_engine
    ???
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/util/deprecations.py:281: in warned
    return fn(*args, **kwargs)  # type: ignore[no-any-return]
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/engine/create.py:599: in create_engine
    dbapi = dbapi_meth(**dbapi_args)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'sqlalchemy.dialects.mssql.pyodbc.MSDialect_pyodbc'>

    @classmethod
    def import_dbapi(cls) -> ModuleType:
>       return __import__("pyodbc")
E       ImportError: dlopen(/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so, 0x0002): Library not loaded: /usr/local/opt/unixodbc/lib/libodbc.2.dylib
E         Referenced from: <87BCBDCC-3D15-3E21-BD10-42E710460D5A> /Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so
E         Reason: tried: '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/lib/libodbc.2.dylib' (no such file), '/usr/lib/libodbc.2.dylib' (no such file, not in dyld cache)

/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/connectors/pyodbc.py:60: ImportError
ERROR       [ 18%]
test setup failed
@pytest.fixture
    def memory_interface() -> Generator[AzureSQLMemory, None, None]:
>       yield from get_azure_sql_memory()

memory/test_azure_sql_memory.py:27: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
mocks.py:117: in get_azure_sql_memory
    azure_sql_memory = AzureSQLMemory(
../pyrit/common/singleton.py:21: in __call__
    cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
../pyrit/memory/azure_sql_memory.py:38: in __init__
    self.engine = self._create_engine(has_echo=verbose)
../pyrit/memory/azure_sql_memory.py:55: in _create_engine
    engine = create_engine(self._connection_string, echo=has_echo)
<string>:2: in create_engine
    ???
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/util/deprecations.py:281: in warned
    return fn(*args, **kwargs)  # type: ignore[no-any-return]
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/engine/create.py:599: in create_engine
    dbapi = dbapi_meth(**dbapi_args)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'sqlalchemy.dialects.mssql.pyodbc.MSDialect_pyodbc'>

    @classmethod
    def import_dbapi(cls) -> ModuleType:
>       return __import__("pyodbc")
E       ImportError: dlopen(/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so, 0x0002): Library not loaded: /usr/local/opt/unixodbc/lib/libodbc.2.dylib
E         Referenced from: <87BCBDCC-3D15-3E21-BD10-42E710460D5A> /Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so
E         Reason: tried: '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/lib/libodbc.2.dylib' (no such file), '/usr/lib/libodbc.2.dylib' (no such file, not in dyld cache)

/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/connectors/pyodbc.py:60: ImportError
ERROR            [ 18%]
test setup failed
@pytest.fixture
    def memory_interface() -> Generator[AzureSQLMemory, None, None]:
>       yield from get_azure_sql_memory()

memory/test_azure_sql_memory.py:27: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
mocks.py:117: in get_azure_sql_memory
    azure_sql_memory = AzureSQLMemory(
../pyrit/common/singleton.py:21: in __call__
    cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
../pyrit/memory/azure_sql_memory.py:38: in __init__
    self.engine = self._create_engine(has_echo=verbose)
../pyrit/memory/azure_sql_memory.py:55: in _create_engine
    engine = create_engine(self._connection_string, echo=has_echo)
<string>:2: in create_engine
    ???
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/util/deprecations.py:281: in warned
    return fn(*args, **kwargs)  # type: ignore[no-any-return]
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/engine/create.py:599: in create_engine
    dbapi = dbapi_meth(**dbapi_args)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'sqlalchemy.dialects.mssql.pyodbc.MSDialect_pyodbc'>

    @classmethod
    def import_dbapi(cls) -> ModuleType:
>       return __import__("pyodbc")
E       ImportError: dlopen(/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so, 0x0002): Library not loaded: /usr/local/opt/unixodbc/lib/libodbc.2.dylib
E         Referenced from: <87BCBDCC-3D15-3E21-BD10-42E710460D5A> /Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so
E         Reason: tried: '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/lib/libodbc.2.dylib' (no such file), '/usr/lib/libodbc.2.dylib' (no such file, not in dyld cache)

/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/connectors/pyodbc.py:60: ImportError
ERROR     [ 19%]
test setup failed
@pytest.fixture
    def memory_interface() -> Generator[AzureSQLMemory, None, None]:
>       yield from get_azure_sql_memory()

memory/test_azure_sql_memory.py:27: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
mocks.py:117: in get_azure_sql_memory
    azure_sql_memory = AzureSQLMemory(
../pyrit/common/singleton.py:21: in __call__
    cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
../pyrit/memory/azure_sql_memory.py:38: in __init__
    self.engine = self._create_engine(has_echo=verbose)
../pyrit/memory/azure_sql_memory.py:55: in _create_engine
    engine = create_engine(self._connection_string, echo=has_echo)
<string>:2: in create_engine
    ???
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/util/deprecations.py:281: in warned
    return fn(*args, **kwargs)  # type: ignore[no-any-return]
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/engine/create.py:599: in create_engine
    dbapi = dbapi_meth(**dbapi_args)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'sqlalchemy.dialects.mssql.pyodbc.MSDialect_pyodbc'>

    @classmethod
    def import_dbapi(cls) -> ModuleType:
>       return __import__("pyodbc")
E       ImportError: dlopen(/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so, 0x0002): Library not loaded: /usr/local/opt/unixodbc/lib/libodbc.2.dylib
E         Referenced from: <87BCBDCC-3D15-3E21-BD10-42E710460D5A> /Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so
E         Reason: tried: '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/lib/libodbc.2.dylib' (no such file), '/usr/lib/libodbc.2.dylib' (no such file, not in dyld cache)

/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/connectors/pyodbc.py:60: ImportError
ERROR     [ 19%]
test setup failed
@pytest.fixture
    def memory_interface() -> Generator[AzureSQLMemory, None, None]:
>       yield from get_azure_sql_memory()

memory/test_azure_sql_memory.py:27: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
mocks.py:117: in get_azure_sql_memory
    azure_sql_memory = AzureSQLMemory(
../pyrit/common/singleton.py:21: in __call__
    cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
../pyrit/memory/azure_sql_memory.py:38: in __init__
    self.engine = self._create_engine(has_echo=verbose)
../pyrit/memory/azure_sql_memory.py:55: in _create_engine
    engine = create_engine(self._connection_string, echo=has_echo)
<string>:2: in create_engine
    ???
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/util/deprecations.py:281: in warned
    return fn(*args, **kwargs)  # type: ignore[no-any-return]
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/engine/create.py:599: in create_engine
    dbapi = dbapi_meth(**dbapi_args)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'sqlalchemy.dialects.mssql.pyodbc.MSDialect_pyodbc'>

    @classmethod
    def import_dbapi(cls) -> ModuleType:
>       return __import__("pyodbc")
E       ImportError: dlopen(/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so, 0x0002): Library not loaded: /usr/local/opt/unixodbc/lib/libodbc.2.dylib
E         Referenced from: <87BCBDCC-3D15-3E21-BD10-42E710460D5A> /Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so
E         Reason: tried: '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/lib/libodbc.2.dylib' (no such file), '/usr/lib/libodbc.2.dylib' (no such file, not in dyld cache)

/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/connectors/pyodbc.py:60: ImportError
ERROR                [ 19%]
test setup failed
@pytest.fixture
    def memory_interface() -> Generator[AzureSQLMemory, None, None]:
>       yield from get_azure_sql_memory()

memory/test_azure_sql_memory.py:27: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
mocks.py:117: in get_azure_sql_memory
    azure_sql_memory = AzureSQLMemory(
../pyrit/common/singleton.py:21: in __call__
    cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
../pyrit/memory/azure_sql_memory.py:38: in __init__
    self.engine = self._create_engine(has_echo=verbose)
../pyrit/memory/azure_sql_memory.py:55: in _create_engine
    engine = create_engine(self._connection_string, echo=has_echo)
<string>:2: in create_engine
    ???
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/util/deprecations.py:281: in warned
    return fn(*args, **kwargs)  # type: ignore[no-any-return]
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/engine/create.py:599: in create_engine
    dbapi = dbapi_meth(**dbapi_args)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'sqlalchemy.dialects.mssql.pyodbc.MSDialect_pyodbc'>

    @classmethod
    def import_dbapi(cls) -> ModuleType:
>       return __import__("pyodbc")
E       ImportError: dlopen(/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so, 0x0002): Library not loaded: /usr/local/opt/unixodbc/lib/libodbc.2.dylib
E         Referenced from: <87BCBDCC-3D15-3E21-BD10-42E710460D5A> /Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so
E         Reason: tried: '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/lib/libodbc.2.dylib' (no such file), '/usr/lib/libodbc.2.dylib' (no such file, not in dyld cache)

/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/connectors/pyodbc.py:60: ImportError
ERROR               [ 19%]
test setup failed
@pytest.fixture
    def memory_interface() -> Generator[AzureSQLMemory, None, None]:
>       yield from get_azure_sql_memory()

memory/test_azure_sql_memory.py:27: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
mocks.py:117: in get_azure_sql_memory
    azure_sql_memory = AzureSQLMemory(
../pyrit/common/singleton.py:21: in __call__
    cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
../pyrit/memory/azure_sql_memory.py:38: in __init__
    self.engine = self._create_engine(has_echo=verbose)
../pyrit/memory/azure_sql_memory.py:55: in _create_engine
    engine = create_engine(self._connection_string, echo=has_echo)
<string>:2: in create_engine
    ???
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/util/deprecations.py:281: in warned
    return fn(*args, **kwargs)  # type: ignore[no-any-return]
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/engine/create.py:599: in create_engine
    dbapi = dbapi_meth(**dbapi_args)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'sqlalchemy.dialects.mssql.pyodbc.MSDialect_pyodbc'>

    @classmethod
    def import_dbapi(cls) -> ModuleType:
>       return __import__("pyodbc")
E       ImportError: dlopen(/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so, 0x0002): Library not loaded: /usr/local/opt/unixodbc/lib/libodbc.2.dylib
E         Referenced from: <87BCBDCC-3D15-3E21-BD10-42E710460D5A> /Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so
E         Reason: tried: '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/lib/libodbc.2.dylib' (no such file), '/usr/lib/libodbc.2.dylib' (no such file, not in dyld cache)

/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/connectors/pyodbc.py:60: ImportError
ERROR [ 20%]
test setup failed
@pytest.fixture
    def memory_interface() -> Generator[AzureSQLMemory, None, None]:
>       yield from get_azure_sql_memory()

memory/test_azure_sql_memory.py:27: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
mocks.py:117: in get_azure_sql_memory
    azure_sql_memory = AzureSQLMemory(
../pyrit/common/singleton.py:21: in __call__
    cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
../pyrit/memory/azure_sql_memory.py:38: in __init__
    self.engine = self._create_engine(has_echo=verbose)
../pyrit/memory/azure_sql_memory.py:55: in _create_engine
    engine = create_engine(self._connection_string, echo=has_echo)
<string>:2: in create_engine
    ???
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/util/deprecations.py:281: in warned
    return fn(*args, **kwargs)  # type: ignore[no-any-return]
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/engine/create.py:599: in create_engine
    dbapi = dbapi_meth(**dbapi_args)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'sqlalchemy.dialects.mssql.pyodbc.MSDialect_pyodbc'>

    @classmethod
    def import_dbapi(cls) -> ModuleType:
>       return __import__("pyodbc")
E       ImportError: dlopen(/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so, 0x0002): Library not loaded: /usr/local/opt/unixodbc/lib/libodbc.2.dylib
E         Referenced from: <87BCBDCC-3D15-3E21-BD10-42E710460D5A> /Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so
E         Reason: tried: '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/lib/libodbc.2.dylib' (no such file), '/usr/lib/libodbc.2.dylib' (no such file, not in dyld cache)

/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/connectors/pyodbc.py:60: ImportError
ERROR [ 20%]
test setup failed
@pytest.fixture
    def memory_interface() -> Generator[AzureSQLMemory, None, None]:
>       yield from get_azure_sql_memory()

memory/test_azure_sql_memory.py:27: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
mocks.py:117: in get_azure_sql_memory
    azure_sql_memory = AzureSQLMemory(
../pyrit/common/singleton.py:21: in __call__
    cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
../pyrit/memory/azure_sql_memory.py:38: in __init__
    self.engine = self._create_engine(has_echo=verbose)
../pyrit/memory/azure_sql_memory.py:55: in _create_engine
    engine = create_engine(self._connection_string, echo=has_echo)
<string>:2: in create_engine
    ???
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/util/deprecations.py:281: in warned
    return fn(*args, **kwargs)  # type: ignore[no-any-return]
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/engine/create.py:599: in create_engine
    dbapi = dbapi_meth(**dbapi_args)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'sqlalchemy.dialects.mssql.pyodbc.MSDialect_pyodbc'>

    @classmethod
    def import_dbapi(cls) -> ModuleType:
>       return __import__("pyodbc")
E       ImportError: dlopen(/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so, 0x0002): Library not loaded: /usr/local/opt/unixodbc/lib/libodbc.2.dylib
E         Referenced from: <87BCBDCC-3D15-3E21-BD10-42E710460D5A> /Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so
E         Reason: tried: '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/lib/libodbc.2.dylib' (no such file), '/usr/lib/libodbc.2.dylib' (no such file, not in dyld cache)

/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/connectors/pyodbc.py:60: ImportError
ERROR [ 20%]
test setup failed
@pytest.fixture
    def memory_interface() -> Generator[AzureSQLMemory, None, None]:
>       yield from get_azure_sql_memory()

memory/test_azure_sql_memory.py:27: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
mocks.py:117: in get_azure_sql_memory
    azure_sql_memory = AzureSQLMemory(
../pyrit/common/singleton.py:21: in __call__
    cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
../pyrit/memory/azure_sql_memory.py:38: in __init__
    self.engine = self._create_engine(has_echo=verbose)
../pyrit/memory/azure_sql_memory.py:55: in _create_engine
    engine = create_engine(self._connection_string, echo=has_echo)
<string>:2: in create_engine
    ???
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/util/deprecations.py:281: in warned
    return fn(*args, **kwargs)  # type: ignore[no-any-return]
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/engine/create.py:599: in create_engine
    dbapi = dbapi_meth(**dbapi_args)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'sqlalchemy.dialects.mssql.pyodbc.MSDialect_pyodbc'>

    @classmethod
    def import_dbapi(cls) -> ModuleType:
>       return __import__("pyodbc")
E       ImportError: dlopen(/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so, 0x0002): Library not loaded: /usr/local/opt/unixodbc/lib/libodbc.2.dylib
E         Referenced from: <87BCBDCC-3D15-3E21-BD10-42E710460D5A> /Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so
E         Reason: tried: '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/lib/libodbc.2.dylib' (no such file), '/usr/lib/libodbc.2.dylib' (no such file, not in dyld cache)

/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/connectors/pyodbc.py:60: ImportError
ERROR [ 20%]
test setup failed
@pytest.fixture
    def memory_interface() -> Generator[AzureSQLMemory, None, None]:
>       yield from get_azure_sql_memory()

memory/test_azure_sql_memory.py:27: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
mocks.py:117: in get_azure_sql_memory
    azure_sql_memory = AzureSQLMemory(
../pyrit/common/singleton.py:21: in __call__
    cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
../pyrit/memory/azure_sql_memory.py:38: in __init__
    self.engine = self._create_engine(has_echo=verbose)
../pyrit/memory/azure_sql_memory.py:55: in _create_engine
    engine = create_engine(self._connection_string, echo=has_echo)
<string>:2: in create_engine
    ???
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/util/deprecations.py:281: in warned
    return fn(*args, **kwargs)  # type: ignore[no-any-return]
/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/engine/create.py:599: in create_engine
    dbapi = dbapi_meth(**dbapi_args)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'sqlalchemy.dialects.mssql.pyodbc.MSDialect_pyodbc'>

    @classmethod
    def import_dbapi(cls) -> ModuleType:
>       return __import__("pyodbc")
E       ImportError: dlopen(/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so, 0x0002): Library not loaded: /usr/local/opt/unixodbc/lib/libodbc.2.dylib
E         Referenced from: <87BCBDCC-3D15-3E21-BD10-42E710460D5A> /Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/pyodbc.cpython-310-darwin.so
E         Reason: tried: '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/opt/unixodbc/lib/libodbc.2.dylib' (no such file), '/usr/local/lib/libodbc.2.dylib' (no such file), '/usr/lib/libodbc.2.dylib' (no such file, not in dyld cache)

/Users/gary/miniconda3/envs/pyrit/lib/python3.10/site-packages/sqlalchemy/connectors/pyodbc.py:60: ImportError

Screenshots

Versions

  • OS: MacOS
  • Browser: N/A
  • Python version: Python 3.10.13
  • PyRIT version: 0.2.2.dev0
  • version of Python packages
System:
    python: 3.10.13 | packaged by conda-forge | (main, Dec 23 2023, 15:36:59) [Clang 16.0.6 ]
executable: /Users/gary/miniconda3/envs/pyrit/bin/python
   machine: macOS-14.5-x86_64-i386-64bit

Python dependencies:
        pyrit: 0.2.2.dev0
       Cython: None
        numpy: 1.26.4
       openai: 1.25.1
          pip: 24.0
 scikit-learn: 1.4.2
        scipy: 1.12.0
   setuptools: 69.1.1
   tensorflow: None
        torch: 2.1.2
 transformers: 4.40.1

@dlmgary dlmgary added the bug Something isn't working label Jun 28, 2024
@romanlutz
Copy link
Contributor

CC @elgertam @rdheekonda

@elgertam
Copy link
Contributor

Hi @dlmgary, using SQL Server requires an ODBC-based driver to connect to SQL Server. The best supported library in Python is PyODBC, which allows Python to speak to an ODBC implementation. On Windows, ODBC is present out of the box, but on Linux & macOS, the end user must install an ODBC library like unixODBC (macOS or Linux) or iODBC (macOS only).

The errors listed indicate that PyODBC cannot find the shared library needed to initiate the ODBC connection, and thus PyODBC cannot be loaded, causing any references to it to fail.

During development on my Mac, I was able to use PyODBC with unixODBC. I did have to configure a couple of the INI configuration files on my machine to make everything work.

I wrote up a bit of documentation here and you can also check out the unixODBC docs and the PyODBC docs.

Let me know if you have any other issues or more specific questions. I can copy-paste some of my configs if you're still struggling to get this to work. Setting up PyODBC is non-trivial, but once you get it working, it more or less never stops.

CC @romanlutz @rdheekonda

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants