【问题标题】:How do i watch python source code files and restart when i save?我如何观看python源代码文件并在保存时重新启动?
【发布时间】:2018-08-27 13:02:39
【问题描述】:

当我保存一个 python 源代码文件时,我想重新运行脚本。有没有这样的命令(有点像 nodemon 的 node)?

【问题讨论】:

  • 您尝试过谷歌提供的任何解决方案吗?有很多,所以我不知道您可能发现或尚未发现什么
  • 好吧,我看到了一个名为“watchdog”的程序,但它看起来像一个程序库,而不是像“nodemon”这样的命令行程序。我只是在寻找像 nodemon 这样或多或少开箱即用的东西。
  • 这个问题可能相关:stackoverflow.com/questions/3274334/…
  • 有些程序会在运行时保存脚本,这几乎是一回事。
  • 看起来 pynotify 可能是我需要的。但我无法将其安装为命令而不是库

标签: python nodemon


【解决方案1】:

虽然在 python 生态系统中可能有一些方法可以做到这一点,例如 watchdog/watchmedo (https://github.com/gorakhargosh/watchdog),甚至可能是带有 inotifywait (https://linux.die.net/man/1/inotifywait) 的 linux 脚本选项,但对我来说,迄今为止最简单的解决方案是。 ..只使用nodemon!我不知道的是,虽然 nodemon 的 github 标语是“监控 node.js 应用程序中的任何更改并自动重启服务器 - 非常适合开发”,但实际上 nodemon 是一个非常通用的工具,并且知道 .py 文件应该例如用 python 执行。这就是我认为神奇发生的地方:https://github.com/remy/nodemon/blob/c1211876113732cbff78eb1ae10483eaaf77e5cf/lib/config/defaults.js

最终结果是下面的命令行完全可以工作。耶!

$ nodemon hello.py
[nodemon] starting `python hello.py`

【讨论】:

  • 我正在尝试使用 PyInquirer,当使用 python 时它可以工作,但使用 nodemon 会给我 assert self.stdin.isatty() AssertionError。使用nodemon2.0.3
  • npx 能够运行节点可执行文件并希望在每次运行时清除屏幕,我一直在使用 npx nodemon --exec "clear;python3" hello.py,这是我从 github.com/remy/nodemon/issues/1318 发现的。认为其他人也可能会喜欢这种方法。
  • @kd12345,是的,看答案
  • @bkinsey808 但是如何使用 pip 安装它?
  • @kd12345 nodemon 与 nodejs 一起安装。先安装nodejs,再安装npm i -g nodemon
【解决方案2】:

您可以安装 nodemon 来监视文件更改。

例如

npm i -g nodemon

然后使用:

nodemon --exec python3 hello.py 

这是在命令行中使用 python3 时使用的。在 Windows 上,您也可以使用 'py'。

【讨论】:

  • 我明白了。这必须在您在命令行中使用 python3 而不仅仅是 python 命令的情况下。很高兴知道!
  • 这有时会导致无法终止子进程并生成新子进程的问题。有什么建议吗?
  • 在 windows 中你应该使用 python 而不是 python3 -> 在我的例子中 -> "nodemon --exec python server.py"
  • 这是我最终使用的,但我想知道如何像 npm run python-script -- --verbose 那样传递参数。我希望将详细参数传递给 python。使用nodemon -e py -I --exec \"python server.py\"
【解决方案3】:

我发现与 nodemon 最相似的方法是使用 watchdog 包:

pip install watchdog

这带有一个名为 watchmedo 的实用程序:

watchmedo shell-command \
 --patterns="*.py" \
 --command='python "${watch_src_path}"' \
 .

现在只需在您的.py 上工作,每次保存文件时都会执行。

【讨论】:

  • 即使是 GUI 应用程序也很完美watchmedo auto-restart -p "*.py" -R python3 -- application.py!使用watchmedo auto-restart -h查看帮助。
  • 似乎无法在 Windows 10 上运行。module 'os' has no attribute 'setsid'
【解决方案4】:

您实际上可以在他们的文档中将 nodemon 与 python 一起使用:

运行非节点脚本 nodemon 也可用于执行和 监控其他程序。 nodemon 将读取文件的扩展名 正在运行的脚本并监视该扩展而不是 .js(如果有) 没有 nodemon.json:

nodemon --exec "python -v" ./app.py

现在 nodemon 将以详细模式运行 app.py 和 python(请注意,如果 你没有将 args 传递给 exec 程序,你不需要 引号),并查找扩展名为 .py 的新文件或修改后的文件。

https://github.com/remy/nodemon#running-non-node-scripts

【讨论】:

    【解决方案5】:

    我只使用npx nodemon pythonfile.py 它有效。确保您使用的是 nodemon v2.0.x 或以上

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 2012-07-20
      • 2016-04-09
      相关资源
      最近更新 更多