当前位置: 首页 > 面试题库 >

在启动状态下运行Python脚本:找不到导入

皮自明
2023-03-14
问题内容

我一直在尝试使用设置脚本以定期运行python程序launchd。python程序失败,因为它找不到我的导入–
我知道这是因为我在日志文件中捕获了错误。为了解决此问题,我创建了~\.MacOSX\environment.plist,然后在其中复制了自己的内容PYTHONPATH,然后注销并再次登录。这似乎不足以解决问题,而且我对尝试其他方法一无所知。

我正在运行OSX 10.8.3。

相关主题:

  • launchd执行python脚本,但导入失败(不适用-我的脚本指向正确的python实例)

更新:

看来我可以运行以下命令:

launchctl setenv PYTHONPATH $PYTHONPATH

脚本将成功执行。因此,修改我的问题:

  1. 这存储在哪里?我检查~\.launchd.conf\etc\.launchd.conf,也不存在了。
  2. 大概此设置在我重新启动时转储。我在哪里可以更改此信息以便launchd找到它?

问题答案:

要设置特定作业的环境,您应该使用EnvironmentVariables作业定义本身中的键:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.example.app</string>
    <key>Program</key>
    <string>/path/to/your/script</string>
    <key>EnvironmentVariables</key>
    <dict>
        <key>PYTHONPATH</key>
        <string>/your/python/path</string>
    </dict>
</dict>
</plist>

您可以launchd(8)通过编辑/etc/launchd.conf守护程序或/etc/launchd- user.conf代理来定义服务的默认环境变量。后者有效,但未记录。当前记录的(但不受支持的)每用户配置文件为$HOME/.launchd.conf

这些配置文件包含launchctl(1)子命令列表。您想要的是:

setenv PYTHONPATH /your/python/path

更新: /etc/launchd.conf Mac OS X 10.10及更高版本不支持。在这些系统上,您必须基于每个作业定义环境变量。



 类似资料:
  • 我试图在启动时运行我python脚本,但它不起作用。 下面是我的python脚本(不起作用): 这是我的python脚本(works): 下面是我的rc.local文件(也可以尝试crontab并在/ect/init.d中设置服务): 看起来通过导入paho.mqtt.发布可以让我的脚本停止工作,我是Linux的新手,我不知道为什么。有人可以帮助我吗?感谢您的帮助。 Ubuntu 16.04 如果

  • 本文向大家介绍在Windows启动时自动运行Python脚本?,包括了在Windows启动时自动运行Python脚本?的使用技巧和注意事项,需要的朋友参考一下 将Python脚本添加到Windows启动时,基本上表示Python脚本将在Windows启动时运行。这可以通过两步过程来完成- 步骤#1:在Windows启动文件夹中添加或添加脚本 在启动Windows后,它会执行(相当于双击)其启动文件

  • 问题内容: 我的用例是我想初始化文件中的某些函数,然后使用定义的那些函数启动ipython。有什么办法可以做 问题答案: 根据文档,这很简单: 使用以下命令启动IPython: 如果不带选项调用,它将执行顺序列出的所有文件,并将您放入解释器,同时仍然确认您可能在文件中设置的任何选项 。此行为与标准Python不同,标准Python在被称为as时只会执行一个文件,而忽略您的配置设置。 所以,只需使用

  • 问题内容: 首先,这可能需要移至超级用户。我无法确定哪个场地更好。 我正在尝试编写一个将在启动/重新启动时运行的R脚本,并将该计算机添加到doRedis工作者池中。(doRedis是一个foreach后端)。 这是我的R脚本“〜/ Rworker.R” 我可以使用command从命令行运行此脚本 。 接下来,我编写了一个shell脚本来运行R脚本,标题为“ /etc/init.d/StartWor

  • 我一直在尝试通过Launchctl安排我的一个python脚本,但遇到了一个错误。目的是它在每个小时的给定时间运行。 我已经创建了plist,并将其加载到Launchctl中,但它无法正常工作。在做了一些挖掘后,我调试并得到以下错误消息:Traceback(最近一次调用最后一次):文件/Library/框架/Python.framework/Versions/3.8/lib/python3.8/s

  • 问题内容: 在Amazon S3 Linux实例上,我有两个名为的脚本,它们 永远 启动和停止(依次运行Node.js应用程序)。我使用这些脚本手动启动和停止我的Node.js应用程序。到目前为止,一切都很好。 我的问题:我还想将其设置为在系统启动时运行。我知道我需要在其中添加文件,并且知道如何将其符号链接到其中的适当目录,但是我无法弄清楚放置在其中的文件中实际需要什么。我认为这应该只是一条线,例