質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Q&A

解決済

1回答

458閲覧

PythonでTwitterのbotを作成したい

UT100

総合スコア16

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

0グッド

1クリップ

投稿2019/05/18 14:47

編集2019/05/18 14:50

実現したいこと

ツイッターでbotを作り、定期的にスクリプトを実行したいです。

発生している問題・エラーメッセージ

定期的にスクリプトを実行するためにlaunchdを使っているのですが、ターミナル上で登録しても($ launchctl load ~/Library/LaunchAgents/twitterbot.python.plist)うまく実行されません。 Atomというエディタを用いて実行したいコードが書いてあるファイル(twitter_bot.py)を編集しており、ターミナルから仮想環境をactivateしてそこから「$ python3 twitter_bot.py」と打ち込むと正しく自分が実行したい結果が表示されます。 Atom上で編集しているファイルから「sys.prefix」でPythonの場所を確認したところ、「/Users/username/.pyenv/versions/3.7.2」と表示され、グローバル環境に入っているPythonを参照していることが原因で「ModuleNotFoundError: No module named 'tweepy'」というエラーを出してしまうと考えています。(Atom上でエラーが出るという意味です) しかし、上で述べたようにターミナルからなら正常に動くためlaunchdを使えばbotとして機能するだろうと予想していました。 やはりAtom上でエラーが出るのがlaunchdを正常に使えなかった理由でしょうか。

該当のソースコード

XML

1<?xml version="1.0" encoding="UTF-8"?> 2<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 3<plist version="1.0"> 4<dict> 5 <!-- label --> 6 <key>Label</key> 7 <string>twitterbot.python</string> 8 9 <!-- script --> 10 <key>ProgramArguments</key> 11 <array> 12 <string>/Users/username/Desktop/python_lesson/Twitter/venv/bin/python3</string> 13 <string>/Users/username/Desktop/python_lesson/Twitter/venv/twitter_bot.py</string> 14 </array> 15 16 <!-- launchctl loadしたタイミングで実行するか --> 17 <key>RunAtLoad</key> 18 <true/> 19 20 <!-- スクリプト実行時間の指定--> 21 <key>StartCalendarInterval</key> 22 <array> 23 <dict> 24 <key>Hour</key> 25 <integer>0</integer> 26 <key>Minute</key> 27 <integer>0</integer> 28 </dict> 29 <dict> 30 <key>Hour</key> 31 <integer>6</integer> 32 <key>Minute</key> 33 <integer>0</integer> 34 </dict> 35 <dict> 36 <key>Hour</key> 37 <integer>12</integer> 38 <key>Minute</key> 39 <integer>0</integer> 40 </dict> 41 <dict> 42 <key>Hour</key> 43 <integer>18</integer> 44 <key>Minute</key> 45 <integer>0</integer> 46 </dict> 47 </array> 48 49 50 51 <!-- ログの指定 --> 52 <key>StandardErrorPath</key> 53 <string>/Users/username/Desktop/python_lesson/Twitter/venv/err.log</string> 54 <key>StandardOutPath</key> 55 <string>/Users/username/Desktop/python_lesson/Twitter/venv/log.log</string> 56 57</dict> 58</plist>

補足情報(FW/ツールのバージョンなど)

上記のコードはtwitterbot.python.plistファイルに書かれているものです。

また、仮想環境内からターミナルで「$ which python3」を使ったときに表示されたのは「/Users/username/Desktop/python_lesson/Twitter/venv/bin/python3」でした。

tweepyがインストールされている場所は以下の通りです。
Location: /Users/username/Desktop/python_lesson/Twitter/venv/lib/python3.7/site-packages

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2019/05/21 04:18 編集

> ターミナルから仮想環境をactivateしてそこから「$ python3 twitter_bot.py」と打ち込むと正しく自分が実行したい結果が表示されます。 の「仮想環境をactivate」と同じ操作は、 launchd 呼び出された場合に実行していますか?
UT100

2019/05/21 07:07

いえ、実行していませんでした。 この時はlaunchdを仮想環境外で登録していました。 先ほど仮想環境内でlaunchdを登録したところ、ログを残す用のファイルに正しく記録されました。 しかしそのスクリプトはツイッターと連携していませんでした。
UT100

2019/05/21 07:51 編集

無事にbotを作ることができました。
guest

回答1

0

自己解決

ツイッターにつぶやけなかったのは「api.update_status()」をつぶやきたい文字列に付けていなかったからでした。

投稿2019/05/21 07:52

UT100

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問