使用systemd启动的python无法启动子进程

2024-02-13

我在 virtualenv 中有一个 python 脚本,它是使用 systemd 启动的。

[Unit]
Description=app
After=network.target

[Service]
Type=simple
User=user
Group=user
Environment=VIRTUAL_ENV=/home/user/Projects/app/venv
Environment=PATH=$VIRTUAL_ENV/bin:$PATH
WorkingDirectory=/home/user/Projects/app
ExecStart=/home/user/Projects/app/venv/bin/python app.py

[Install]
WantedBy=multi-user.target

问题是该脚本使用subprocess.Popen(['python', 'whatever.py'])打开另一个 python 脚本。我得到了一个未找到的错误,并发现 python 应该使用绝对路径调用,所以我改变了它并且它运行良好。

但是,现在我使用第三方库,pygatt,里面使用subprocess来打开gatttool or hcitool哪些在$PATH(系统范围的二进制文件,通常位于 /usr/bin 中)。
所以现在我无法更改该库(我可以通过分叉它,但我希望我不必这样做)。

为什么 systemd 在不使用绝对路径的情况下无法生成 python 子进程?没有 systemd(从控制台运行),一切正常。


我不确定,但很可能在以下配置行中不考虑在一个配置行中设置环境。

Environment=VIRTUAL_ENV=/home/user/Projects/app/venv
Environment=PATH=$VIRTUAL_ENV/bin:$PATH

在这里你期待着VIRTUAL_ENV被设置为$VIRTUAL_ENV评估下一行,但这可能不起作用。我会尝试对第二行进行硬编码:

Environment=VIRTUAL_ENV=/home/user/Projects/app/venv
Environment=PATH=/home/user/Projects/app/venv/bin:$PATH
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用systemd启动的python无法启动子进程 的相关文章

随机推荐

  • Postcss - 颜色函数插件 - “无法从字符串解析颜色”

    使用以下 postcss 插件 postcss cssnext postcss 嵌套 postcss 颜色函数 使用以下颜色函数时 我经常遇到以下错误 Unable to parse color from string l 20 样式 cs
  • Winforms 到 WPF 的转换:BeginInvoke 到什么?

    这是我在 WinForms 中的旧代码 private void ValueChanged double inValue1 double inValue2 only manual mode for this driver so that s
  • 在没有循环的情况下找到两个向量中的最大值?

    如果有两个向量 比如说x and y for i in 1 length x z i max x i y i 你能帮我在不使用循环的情况下执行此操作吗 假设向量x and y具有相同的长度 pmax是你的函数 z pmax x y 如果长度
  • sql server中schema的重要性是什么?

    sql server中schema的重要性是什么 这个模式对我有什么帮助 出于安全原因这很重要吗 Yes SQL 模式的主要目的是促进安全管理 定义谁 哪些主体 可以访问什么 哪些数据库对象 从 SQL 2005 开始 当架构不再直接与所有
  • php shell exec wget 不在后台运行

    我想按如下方式运行 wget shell exec wget http somedomain com somefile mp4 sleep 20 continue my code 我想要的是让 PHP 等待 shell exec wget
  • 控制台应用程序相互通信的推荐方式是什么?

    我有一个用 C 编写的控制台应用程序系统 在不同的机器上运行 我用的是MSMQ 我的问题是 如何使我的控制台应用程序相互通信 我这样问是因为我想创建一个新的控制台应用程序 其他应用程序可以查询该应用程序以了解 MSMQ 中的消息数量 编辑1
  • 我可以在 pom 或 settings.xml 中包含 mvn deploy:deploy-file 而不是 cli goal

    我需要将自定义 jar 与从我的 Java 项目生成的 jar 一起部署到 Artifactory 目前我能找到的唯一方法是通过命令行目标使用 mvn deploy deploy file DgroupId
  • 配置套接字 ACK 超时?

    有没有办法配置套接字在决定连接失败之前期望收到已发送数据的 ACK 的超时 我知道这也可以在应用程序级别完成 但是由于我发送的每个数据包都已被确认 并且我只想知道是否收到了我的数据 因此在应用程序级别使用附加数据来完成相同的任务事情似乎很浪
  • Nexus3:推送到 Docker Group Repo

    I have Nexusv3 6 and created a Docker repo docker repo type hosted and a Docker group docker group type group For both I
  • 动态调用方法和类名

    在某些情况下 我必须从类名中调用方法名 string scenario1 MockScenario1 string scenario2 MockScenario2 MockScenario1 GetInfo MockScenario2 Ge
  • 为什么我只能看到一个 Spark Streaming kafkaReceiver

    我很困惑为什么我只能在 Spark Web UI 页面 8080 中看到一个 KafkaReceiver 但我在Kafka中有10个分区 并且在spark集群中使用了10个核心 我的Python代码如下 kvs KafkaUtils cre
  • Python configparser 不会接受没有值的键

    因此 我正在编写一个从配置文件中读取的脚本 并且我想完全按照 configparser 的设计方式使用它 如下所述 http docs python org release 3 2 1 library configparser html h
  • 编译器如何将异步方法的返回值转换为返回Task

    我设计了以下方法来创建记录 public Task
  • 常规的。表达式检查字符串的第一个字母

    我想检查字符串的第一个字符是否是字母 我的正则表达式是 a zA Z 这是行不通的 它出什么问题了 您的表达式不需要 也不应该有 a zA Z 事实上 如果您不需要知道这封信是什么 您可以更简单 a zA Z These expressio
  • 如何打包Python程序

    我是 python 编程新手 我正在编写一个简单的基于命令行的 twitter 应用程序 我必须使用外部库 如 simplejson tweepy 等 有没有一种方法可以打包我的python程序来包含这些库 这样当我分发这个程序时 用户不必
  • 从 .Net 中的 SAS 数据源读取数据

    我被要求在 ASP Net 应用程序中从 SAS 读取一些数据 我有 Windows 窗体应用程序的工作代码 然而相同的代码doesn t在 ASP Net 中工作 但我可以尝试一下 具有相同引用的干净项目始终会失败 这是我所得到的连接 S
  • 尽管链表和数组的插入和删除操作都需要 O(n) 时间复杂度,但链表在插入和删除操作方面如何比数组更快?

    数组中插入和删除操作的最坏情况运行时间是 O n 因为我们可能需要进行 n 次移位 链表也是如此 如果我们想要插入或删除第i个元素 我们可能需要遍历整个链表才能到达预期执行插入 删除的位置 所以链表也需要O n 时间 那么为什么在进行插入
  • NetBeans 中的编译问题

    我通过下载 Bouncy castle 的一些第三方 jar 在 NetBeans 中创建了一个项目 它提供了一些 java 加密 API 我还下载了源代码并将它们按照包名称放在 src 文件夹下 然而 我的项目中的一些 java 文件显示
  • AngularJS 动态表单字段验证

    我正在尝试验证从后端端点提供给我的一些表单字段 所以基本上input元素是在 a 内动态创建的ng repeat 因此 input属性也是动态添加的 例如type name etc 然而由于name当我尝试验证属性时 属性是动态添加的 例如
  • 使用systemd启动的python无法启动子进程

    我在 virtualenv 中有一个 python 脚本 它是使用 systemd 启动的 Unit Description app After network target Service Type simple User user Gr