MAC OSX - 在启动时执行python脚本

时间:2015-03-30 03:41:49

标签: macos

我对Python和MAC OSX都很新。对于我的学术项目,我需要使用twitter流API从twitter下载一堆推文。我需要下载至少5000000条推文。所以我编写了一个python脚本并将其置于启动状态。 “系统偏好 - >用户和群组 - >登录项目”并在那里添加了我的脚本。但我发现登录系统时脚本没有执行!请帮我解决这个问题。

3 个答案:

答案 0 :(得分:6)

相应地调整以下内容,将其命名为myscript_launcher.plist,并将其放在以下三个位置之一:/System/Library/LaunchAgents/System/Library/LaunchDaemons/Users/<username>/Library/LaunchAgents

<?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>my.python.script.name</string>
    <key>ProgramArguments</key>
    <array>
        <string>/path/to/python</string>
        <string>/path/to/python/script.py</string>
    </array>
    <key>StandardErrorPath</key>
    <string>/var/log/python_script.error</string>
    <key>KeepAlive</key>
    <true/>
</dict>
</plist>

另外,我们假设您将plist文件放在~/Library/LaunchAgents中。您可以使用initctl启动和停止它。首先,使用initctl load ~/Library/LaunchAgents/myscript_launcher.plist。要停止它,请执行相同操作但使用unload参数

答案 1 :(得分:2)

您需要创建一个启动python代码的shell文件。告诉shell脚本在登录时开始。

例如

#!/bin/bash
python username/Desktop/startupscripts/file.py

使用.sh扩展名保存文件。

将.sh文件添加到 “系统偏好 - &gt;用户和群组 - &gt;登录项目”,.sh脚本将调用python文件。

这是你应该在shell文件中拥有的内容。我假设这是文件的路径,如果不修改它。

#!/bin/bash
python /Users/username/moviebuzz-api/flask/bin/streaming_movies.py
别无其他。

答案 2 :(得分:0)

这是我在Mojave上使用的完整解决方案:

列表:~/Library/LaunchAgents/play.with.mpv.plist

<?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>Disabled</key>
    <false/>
    <key>EnvironmentVariables</key>
    <dict>
        <key>PATH</key>
        <string>/Users/e/Library/Python/3.7/bin:/usr/local/bin</string>
    </dict>
    <key>KeepAlive</key>
    <true/>
    <key>Label</key>
    <string>play.with.mpv</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/python3</string>
        <string>/Users/e/Library/Python/3.7/bin/play-with-mpv</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/tmp/play.with.mpv.stderr</string>
    <key>StandardOutPath</key>
    <string>/tmp/play.with.mpv.stdout</string>
</dict>
</plist>

介意python3的路径-用which python3play-with-mpv python脚本找到它!

加载plist:

launchctl load ~/Library/LaunchAgents/play.with.mpv.plist

如果您的视频丢帧了,请在~/.config/mpv/mpv.conf中创建mpv配置,并将其放置在此处:

video-sync=display-resample

如果这样做没有帮助,请尝试

opengl-early-flush=no