Run Python Script at OS X Startup

后端 未结 3 893
陌清茗
陌清茗 2020-12-13 07:35

I am very new to python as well as MAC OSX. For my academic project I need to download a bunch of tweets from twitter using twitter streaming API. I need to download atleast

相关标签:
3条回答
  • 2020-12-13 08:08

    You need to create a shell file that launches your python code. Tell the shell script to start at log in.

    example

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

    save the file with the .sh extension.

    add the .sh file to "System Preference -> Users and Groups -> Login items", the .sh script will call the python file.

    This is what you should have in the shell file. I'm assume this is the path to the file, if it isn't modify it.

    #!/bin/bash
    python /Users/username/moviebuzz-api/flask/bin/streaming_movies.py
    

    nothing else.

    0 讨论(0)
  • 2020-12-13 08:10

    Adapt the following accordingly, name it something like myscript_launcher.plist, and put it in either one of three locations: /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>
    

    Also, let's assume you put the plist file in ~/Library/LaunchAgents. You can start and stop it with the launchctl. To start, use launchctl load ~/Library/LaunchAgents/myscript_launcher.plist. To stop it, do the same but use the unload argument

    0 讨论(0)
  • 2020-12-13 08:19

    Here's the full solution I am using on Mojave:

    Plist: ~/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>
    

    Mind the PATH to python3 - find it with which python3 and the play-with-mpv python script!

    Load plist:

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

    If your video is dropping frames as hell, create mpv config in ~/.config/mpv/mpv.conf and put there this:

    video-sync=display-resample
    

    if that do doesn't help, try this instead

    opengl-early-flush=no
    
    0 讨论(0)
提交回复
热议问题