{"record":{"id":"19b1270eac044979","repo":"hsliuping/TradingAgents-CN","slug":"pymongo-is-not-installed-please-install-it-with","errorCode":null,"errorMessage":"pymongo is not installed. Please install it with: pip install pymongo","messagePattern":"pymongo is not installed\\. Please install it with: pip install pymongo","errorType":"exception","errorClass":"ImportError","httpStatus":null,"severity":"critical","filePath":"tradingagents/config/mongodb_storage.py","lineNumber":33,"sourceCode":"from tradingagents.utils.logging_manager import get_logger\nfrom tradingagents.config.runtime_settings import get_timezone_name\nlogger = get_logger('agents')\n\ntry:\n    from pymongo import MongoClient\n    from pymongo.errors import ConnectionFailure, ServerSelectionTimeoutError\n    MONGODB_AVAILABLE = True\nexcept ImportError:\n    MONGODB_AVAILABLE = False\n    MongoClient = None\n\n\nclass MongoDBStorage:\n    \"\"\"MongoDB存储适配器\"\"\"\n    \n    def __init__(self, connection_string: str = None, database_name: str = \"tradingagents\"):\n        if not MONGODB_AVAILABLE:\n            raise ImportError(\"pymongo is not installed. Please install it with: pip install pymongo\")\n        \n        # 修复硬编码问题 - 如果没有提供连接字符串且环境变量也未设置，则抛出错误\n        self.connection_string = connection_string or os.getenv(\"MONGODB_CONNECTION_STRING\")\n        if not self.connection_string:\n            raise ValueError(\n                \"MongoDB连接字符串未配置。请通过以下方式之一进行配置：\\n\"\n                \"1. 设置环境变量 MONGODB_CONNECTION_STRING\\n\"\n                \"2. 在初始化时传入 connection_string 参数\\n\"\n                \"例如: MONGODB_CONNECTION_STRING=mongodb://localhost:27017/\"\n            )\n        \n        self.database_name = database_name\n        self.collection_name = \"token_usage\"\n        \n        self.client = None\n        self.db = None\n        self.collection = None\n        self._connected = False","sourceCodeStart":15,"sourceCodeEnd":51,"githubUrl":"https://github.com/hsliuping/TradingAgents-CN/blob/74783e8817d6cf6de29867880631cc555153f36b/tradingagents/config/mongodb_storage.py#L15-L51","documentation":"Raised by MongoDBStorage.__init__ when the optional pymongo dependency is not installed (MONGODB_AVAILABLE is False). The module imports pymongo in a try/except at import time and the storage class guards instantiation.","triggerScenarios":"Constructing MongoDBStorage(...) in an environment where `import pymongo` failed, e.g. pip install tradingagents without extras, or a venv missing pymongo.","commonSituations":"Base install without the mongo extra, production image slimmed down, dependency conflicts removing pymongo during a pip resolver pass.","solutions":["pip install pymongo","Or install the project with the mongodb extra if provided (pip install -e '.[mongodb]')","Verify: python -c \"import pymongo; print(pymongo.version)\"","If MongoDB is optional in your flow, catch ImportError and fall back to another storage backend"],"exampleFix":"# before\nstorage = MongoDBStorage()  # ImportError\n# after\ntry:\n    from tradingagents.config.mongodb_storage import MongoDBStorage\n    storage = MongoDBStorage()\nexcept ImportError:\n    storage = None  # or fallback backend","handlingStrategy":"try-catch","validationCode":"try:\n    import pymongo  # noqa\n    MONGODB_AVAILABLE = True\nexcept ImportError:\n    MONGODB_AVAILABLE = False\nif not MONGODB_AVAILABLE:\n    # skip mongo-backed path\n    pass","typeGuard":null,"tryCatchPattern":"try:\n    storage = MongoDBStorage(connection_string=cs)\nexcept ImportError as e:\n    if 'pymongo' in str(e):\n        storage = LocalStorage()  # fallback\n    else:\n        raise","preventionTips":["Declare pymongo in requirements or extras","Dockerfile: pip install pymongo","Guard optional backends with availability flags like the library does"],"tags":["python","mongodb","dependency","importerror"],"backgroundTag":"missing-dependency","analyzedSha":"74783e8817d6cf6de29867880631cc555153f36b","analyzedAt":"2026-08-28T11:39:07.729Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}