跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教一个问题,如何在 subprocess.Popen() 中设置 PYTHONPATH
未分類
29 5 月 2020

请教一个问题,如何在 subprocess.Popen() 中设置 PYTHONPATH

请教一个问题,如何在 subprocess.Popen() 中设置 PYTHONPATH

資深大佬 : haozi1986 1

因为历史原因,现在有一大堆 py 程序分散于各个目录中(数量大概有百多个),目前是通过 crontab 进行定时执行,维护的时候看见这一大堆计划任务就头痛,于是想给它们做一些整合,期间遇到了一些问题。

原 crontab 的命令模式大致如下:

PYTHONPATH=<code_dir> python3 <code_dir>/xxx/yyy/zzz.py" >> /dev/null 2>&1 

我想通过 subprocess.Popen() 的方式来执行这样的命令,但是尝试了多次也无法设置 PYTHONPATH,在网上搜了一番也没找到合适的解决方法。

使用 os.popen() 倒是可以成功执行,但有一定概率会出现僵尸进程。

于是想请教一下大家,如何在 subprocess.Popen() 中设置 PYTHONPATH,或者有更好的方式来执行这样的命令且不会造成僵尸进程。

谢谢!

大佬有話說 (8)

  • 資深大佬 : wuwukai007

    直接写 python 绝对路径不行吗

  • 主 資深大佬 : haozi1986

    @wuwukai007 因为这些程序很多都有相对导入的模块,绝对路径无法处理这类导入,在 crontab 中执行的时候都设置了 PYTHONPATH

  • 資深大佬 : wuwukai007

    相对倒入的话 python -m xxx
    应该可以解决大部分问题

  • 資深大佬 : superrichman

    subprocess 加个 cwd 参数

  • 資深大佬 : hsfzxjy

    Popen 不是有个 env 参数吗

  • 資深大佬 : littlewey

    或者把 `PYTHONPATH=<code_dir> python3 <code_dir>/xxx/yyy/zzz.py” >> /dev/null 2>&1` 这样的行写成 run_xxx_yyy_zzz.sh

  • 資深大佬 : chenxytw

    env 参数,注意这个参数是覆盖,如果你是要 append 的话,要自己处理

  • 主 資深大佬 : haozi1986

    感谢上诸位的帮助,问题解决了!

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具