ImportError: cannot import name 'EVENT_TYPE_OPENED' from 'watchdog.events' (C:\Users\Ljimmy\AppData\Local\Programs\Python\Python38\lib\site-packages\watchdog\events.py),修改代码
时间: 2023-07-07 07:44:41 浏览: 68
这个问题通常是由于 `EVENT_TYPE_OPENED` 常量已经被移除或者改名导致的。您可能需要更新您的代码来适应最新版本的 `watchdog` 模块。
建议您修改代码中涉及到 `EVENT_TYPE_OPENED` 的部分,使用新的常量名或者直接使用常量的数值。您可以参考以下代码示例:
```python
from watchdog.events import FileSystemEventHandler, EVENT_TYPE_CREATED
class MyHandler(FileSystemEventHandler):
def on_created(self, event):
if event.event_type == EVENT_TYPE_CREATED:
print(f"File created: {event.src_path}")
```
在这个示例中,我们直接使用了 `EVENT_TYPE_CREATED` 常量,而不是 `EVENT_TYPE_OPENED`。如果您的代码中还有其他地方使用了 `EVENT_TYPE_OPENED`,也需要相应地进行修改。
相关问题
File c:\users\ljimmy\appdata\local\programs\python\python38\lib\site-packages\werkzeug\_reloader.py:315, in WatchdogReloaderLoop.__init__(self, *args, **kwargs) 313 from watchdog.observers import Observer 314 from watchdog.events import PatternMatchingEventHandler --> 315 from watchdog.events import EVENT_TYPE_OPENED 316 from watchdog.events import FileModifiedEvent 318 super().__init__(*args, **kwargs) ImportError: cannot import name 'EVENT_TYPE_OPENED' from 'watchdog.events' (c:\users\ljimmy\appdata\local\programs\python\python38\lib\site-packages\watchdog\events.py)
这个错误是由于您正在使用的 watchdog 库版本过低导致的。EVENT_TYPE_OPENED 是 watchdog 0.10.0 引入的,如果您的版本低于该版本,将无法找到该常量。请尝试升级 watchdog 库到最新版本,或者使用以下代码替换您的代码以使用旧版 watchdog:
```python
import watchdog.events
if not hasattr(watchdog.events, "EVENT_TYPE_OPENED"):
watchdog.events.EVENT_TYPE_OPENED = 'created'
```
from flask import Flask, request, jsonify from rasa.core.agent import Agent app = Flask(__name__) agent = Agent.load("models/20230608-162832.tar.gz") @app.route("/webhooks/rasa/webhook", methods=["POST"]) def webhook(): data = request.json message = data["message"] sender_id = data["sender"] response = agent.handle_text(message, sender_id=sender_id) text = response[0]["text"] return jsonify({"text": text}) if __name__ == "__main__": app.run(debug=True)发生错误ImportError: cannot import name 'EVENT_TYPE_OPENED' from 'watchdog.events' (C:\Users\Ljimmy\AppData\Local\Programs\Python\Python38\lib\site-packages\watchdog\events.py),修改代码
您可以尝试修改您的代码,使用 `EVENT_TYPE_CREATED` 替换 `EVENT_TYPE_OPENED`。
修改后的代码如下所示:
```python
from flask import Flask, request, jsonify
from rasa.core.agent import Agent
from watchdog.events import EVENT_TYPE_CREATED
import logging
app = Flask(__name__)
agent = Agent.load("models/20230608-162832.tar.gz")
logging.getLogger('werkzeug').disabled = True
@app.route("/webhooks/rasa/webhook", methods=["POST"])
def webhook():
data = request.json
message = data["message"]
sender_id = data["sender"]
response = agent.handle_text(message, sender_id=sender_id)
text = response[0]["text"]
return jsonify({"text": text})
if __name__ == "__main__":
app.run(debug=True)
```
在这个修改后的代码中,我们使用了 `EVENT_TYPE_CREATED` 替换了 `EVENT_TYPE_OPENED`,并且添加了禁用 Flask 日志打印的代码。这样您就可以避免 `watchdog` 模块导致的问题。