退屈なことはpython...で勉強しておりますが
Macでpython3系ですとpyperclipが使えないようです。
pbcopy,pbpasteを利用するとあるのですがsubprocess.Popen()などの使い方がわかりません。
ホームディレクトリで下記コードをうつとpbpasteされるようですが、
Python
1import subprocess 2subprocess.Popen(['pbpaste'])
python
1 2上記のコードを仮想マシンでうつと、下記のエラーがでます。 3クリップボードのデータがsubprocess上にないのが原因でしょうか 4読み取るにはどうすればよいでしょうか. 5 6Traceback (most recent call last): 7 File "<stdin>", line 1, in <module> 8 File "/home/vagrant/.pyenv/versions/3.5.2/lib/python3.5/subprocess.py", line 947, in __init__ 9 restore_signals, start_new_session) 10 File "/home/vagrant/.pyenv/versions/3.5.2/lib/python3.5/subprocess.py", line 1551, in _execute_child 11 raise child_exception_type(errno_num, err_msg) 12FileNotFoundError: [Errno 2] No such file or directory: 'pbpaste'
ターミナルでpbpasteと打つとどうなりますか?
ターミナルではクリップボードの情報がコピーされます。
質問文の「上記のコードを仮想マシンでうつと」は、そのターミナル上で起動したpythonで、という理解でよろしいですか?
ドットインストールのローカル開発環境(下記)を参考にしてvagrant sshでvagrantにログインしてcyberduck上にある.pyファイルにコードを書いているのですが、、、https://dotinstall.com/lessons/basic_localdev_mac_v2
ではvagrant上でpbpasteが打てない状況なのではないでしょうか。確認してみてください
そのようです。下記のエラーがでます。[vagrant@localhost python_lessons]$ python Python 3.5.2 (default, Dec 6 2017, 15:32:11) [GCC 4.4.7 20120313 (Red Hat 4.4.7-18)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> pbpaste Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'pbpaste' is not defined >>>
いえ、pythonはどうでも良いので、まずはvagrantの環境上でpbpasteが見えているかどうかを確認したいのです。単に$ pbpasteだとどうなりますかね? ホストのターミナルとvagrantの環境上で確認してください
すみませんよくわかっていなくて下記のメッセージが出ます。-bash: pbpaste: コマンドが見つかりません
pbcopy, pbpasteはただのコマンドで、pythonはそれを呼び出しているだけのコードです。なので、独立して使えればpythonプログラムは動くし、独立して使えなければダメという状況になっています。ホストのターミナルで$ pbpasteだと打てるのでは?
ではvagrantでpythonを使う場合クリップボードの情報は扱えないということでしょうか。教本にpyperclipが頻繁に出て来るので代替をと思いましたが、、、何か他の方法はないでしょうか。質問ばかりで恐縮です。
vargantの設定で頑張れば、コマンドを共有するとか、vargantの環境にインストールする方法があるのかもしれませんが、macはあまり詳しくないのでこれ以上はご勘弁ください・・・
「退屈なことはpython...」をやる程度なら、ホスト上にインストールしたpythonでやれば済むという話もある、とは伝えておきます
いえいえ。なんらかの回答をくださるだけで心強いです。調べてみます。ありがとうございました。
あなたの回答
tips
プレビュー