繁体   English   中英

如何为正确的名称运行 python 命令(py、python、python3)

[英]How can I run a python command for the correct name (py, python, python3)

我认为这与: 如何检查 Bash 脚本中是否存在程序?

具体来说,我想在有py但没有python3的计算机上运行py -m http.server ,我想在有python3但没有py的计算机上运行python3 -m http.server 我还尝试检查版本号: py -v && py -m http.server; python3 -v && python3 -m http.server py -v && py -m http.server; python3 -v && python3 -m http.server但这似乎仍然有同样的问题,并且按 ctrl+C 二十次并不能杀死它。

我试过py && py -m http.server; python3 && python3 -m http.server py && py -m http.server; python3 && python3 -m http.server但我相信它正在执行 python 中的第二个命令。 此外,Python 在其他计算机上还有其他别名。 我知道我可以将py设置为python3的别名,但我正在寻找一个通用的解决方案。

(旁注:这真的让我很困扰,这是不一致的。他们都应该工作。)

最终,我想要一个并行运行两件事的脚本:第一个只是npm run dev上面有一个--watch并且必须继续运行,另一个是cd docs/然后使用 python 在本地主机上托管,然后打开 chrome 到localhost:8000 ,非常感谢额外的帮助,仍然是 Linux 的初学者。

我还想创建第二个运行npm run build的命令,将 docs/sw.js 中的第二行从const dynamicCacheName = 'site-dynamic-vNUMBER'; 用 NUMBER+1 替换 NUMBER。

这能满足你的要求吗? 假设 bash 或类似:

( py -V && py -m http.server ) || ( python3 -V && python3 -m http.server )

在我的盒子上,它执行以下操作:

$ ( py -V && py -m http.server ) || ( python3 -V && python3 -m http.server )
py: command not found
Python 3.5.2
Serving HTTP on 0.0.0.0 port 8000 ...

对于你问题的第二部分,你可以有一个像这样的小 bash 脚本(我包括 python 或 py 检查):

#!/bin/bash

npm run dev --watch &

chromium-browser "http://localhost:8000" 2>/dev/null &

cd docs/ || exit # Exit if the cd command fails
if command -v py -V &> /dev/null; then
    echo "py"
    py -m http.server
elif command -v python3 -V &> /dev/null; then
    echo "python3"
    python3 -m http.server
else
    echo "Neither command found"
fi

&在命令结束时将在后台运行它,如上所述,它仍将显示命令的 output。

如果您使用 CTRL+C 终止脚本,它将终止所有内容,铬、python 服务器和 npm 运行。

我实际上想发布一个完整的答案,因为我从几个答案和评论以及与朋友聊天中得到了我想要的:

I installed the npm package concurrently and then added a local-dev npm script in my package.json :

"scripts": {
    "dev-no-watch": "postcss src/styles.css -o docs/css/styles.css",
    "dev": "postcss src/styles.css -o docs/css/styles.css --watch --verbose",
    "build": "cross-env NODE_ENV=production postcss src/styles.css -o docs/css/styles.css && cleancss -o docs/css/styles.css docs/css/styles.css",
    "localhost": "cd docs && ( py -V && py -m http.server ) || ( python3 -V && python3 -m http.server )",
    "local-dev": "concurrently --kill-others \"npm run dev\" \"npm run localhost\""
},

它同时运行,并且在按下 ctrl+C 时,也会同时杀死两者。

我当然从检测 python 版本并正确运行/优雅地失败等的原始问题的答案中添加了localhost ,这就像一个魅力。

希望这个答案对将来的某人有所帮助:)

(现在我只需要找出 hos 来独立地从命令行操作系统编辑一行文件)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM