PythonRuntimeRuntimeError: This event loop is already running
Notebook or async code is already running an event loop
Typical symptoms
- RuntimeError about an event loop
- Async examples fail in Jupyter
- Synchronous helper code works in a script but not a notebook
Likely causes
- Jupyter already owns the event loop
- The code mixes blocking and async APIs
- A helper starts a nested loop
Checks
- Identify whether the code is running in Jupyter, IPython, or a plain script
- Use one async style consistently
- Avoid starting nested event loops
Resolution path
- Use notebook-compatible async patterns or the package helper intended for notebooks
- Keep script examples and notebook examples separate in documentation
Related terms: asyncio, Jupyter, IPython, await, nest_asyncio, ib_insync
PythonSetupModuleNotFoundError
Python cannot import ib_insync or ib_async
Typical symptoms
- No module named ib_insync
- No module named ib_async
- The import works in one terminal but not another
Likely causes
- The package is installed in a different environment
- The notebook kernel does not match the terminal interpreter
- The virtual environment is not active
Checks
- Print sys.executable in the failing process
- Run python -m pip show for the package in that same interpreter
- Confirm the notebook kernel path
Resolution path
- Install dependencies with the interpreter that runs the code
- Use a project virtual environment and document activation steps
Related terms: import, pip, venv, kernel, environment, ib_async
PythonDataTypeError: can't compare offset-naive and offset-aware datetimes
Python datetime values mix timezone-aware and naive timestamps
Typical symptoms
- Datetime comparison fails
- pandas filters fail after joining data sources
- Backtest windows shift unexpectedly
Likely causes
- Some timestamps include timezone information and others do not
- IBKR bars, CSV files, and local timestamps were normalized differently
Checks
- Inspect timezone metadata before merging
- Record exchange timezone and bar-close convention
- Verify daylight-saving transitions in sample data
Resolution path
- Normalize timestamps deliberately at ingestion
- Keep a documented convention such as UTC internally and display time zones only at the edge
Related terms: datetime, timezone, UTC, pandas, tz_localize, tz_convert
PythonData
Request succeeds but the resulting DataFrame is empty
Typical symptoms
- No exception is raised
- The DataFrame has zero rows
- Downstream calculations produce NaN or empty output
Likely causes
- The request returned no bars or positions
- The code filtered all rows
- The contract, date range, or permissions do not match available data
Checks
- Inspect the raw API response before building the DataFrame
- Log row counts after every filter
- Test a known liquid symbol and a short time range
Resolution path
- Handle empty data as a first-class branch
- Fail fast with a clear diagnostic before calculations or order-related logic
Related terms: pandas, DataFrame, empty, NaN, filter, historical data
Educational boundary
This lookup is for technical troubleshooting and reproducibility. It is not financial, investment, trading, tax, or legal advice. Prefer paper trading and read-only checks while diagnosing live connectivity or data issues.
Interactive Brokers, IBKR, Trader Workstation, and IB Gateway are trademarks or registered trademarks of their respective owners. InQuantWeTrust is independent and is not affiliated with, endorsed by, or sponsored by Interactive Brokers.