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

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

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

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

Q&A

3回答

5297閲覧

VSCode内であるPythonプログラムが実行できず、エラーが発生する

faker

総合スコア51

Python 3.x

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

0グッド

0クリップ

投稿2018/12/07 09:54

編集2018/12/08 02:13

PyxelというPythonプログラムをVSCode上で実行したい

以下のプログラムの、サンプルプログラム「01_hello_pyxel.py」をVSCodeで実行しようとしたところ、エラーが発生し実行することができません。
https://github.com/kitao/pyxel

PowerShellでは実行できたのになぜでしょうか?

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

例外が発生しました: FileNotFoundError [Errno 2] No such file or directory: 'c:\Users\[ユーザー名]\.vscode\extensions\ms-python.python-2018.11.0\pythonFiles\experimental\assets/pyxel_logo_38x16.png' File "C:\Users[ユーザ名]\Downloads\Pyxel\pyxel_examples\01_hello_pyxel.py", line 6, in __init__ pyxel.image(0).load(0, 0, "assets/pyxel_logo_38x16.png") File "C:\Users[ユーザ名]\Downloads\Pyxel\pyxel_examples\01_hello_pyxel.py", line 18, in <module> App()

該当のソースコード

Python

1import pyxel 2 3 4class App: 5 def __init__(self): 6 pyxel.init(160, 120, caption="Hello Pyxel") 7 pyxel.image(0).load(0, 0, "assets/pyxel_logo_38x16.png") 8 pyxel.run(self.update, self.draw) 9 10 def update(self): 11 if pyxel.btnp(pyxel.KEY_Q): 12 pyxel.quit() 13 14 def draw(self): 15 pyxel.cls(0) 16 pyxel.text(55, 41, "Hello, Pyxel!", pyxel.frame_count % 16) 17 pyxel.blt(61, 66, 0, 0, 0, 38, 16) 18 19 20App()

試したこと

ダウンロードしたPyxelプログラムのフォルダをVSCodeで開き、「01_hello_pyxel.py」を実行した

VSCodeのlaunch.json

情報追加したほうがよいとの指摘があったため、VSCodeのlaunch.jsonを補足させていただきます。launch.jsonってこれのことでしょうか?よろしくお願いします。

######launch.json

json

1{ 2 // IntelliSense を使用して利用可能な属性を学べます。 3 // 既存の属性の説明をホバーして表示します。 4 // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387 5 "version": "0.2.0", 6 "configurations": [ 7 { 8 "name": "Python: Current File (Integrated Terminal)", 9 "type": "python", 10 "request": "launch", 11 "program": "${file}", 12 "console": "integratedTerminal" 13 }, 14 { 15 "name": "Python: Attach", 16 "type": "python", 17 "request": "attach", 18 "port": 5678, 19 "host": "localhost" 20 }, 21 { 22 "name": "Python: Module", 23 "type": "python", 24 "request": "launch", 25 "module": "enter-your-module-name-here", 26 "console": "integratedTerminal" 27 }, 28 { 29 "name": "Python: Django", 30 "type": "python", 31 "request": "launch", 32 "program": "${workspaceFolder}/manage.py", 33 "console": "integratedTerminal", 34 "args": [ 35 "runserver", 36 "--noreload", 37 "--nothreading" 38 ], 39 "django": true 40 }, 41 { 42 "name": "Python: Flask", 43 "type": "python", 44 "request": "launch", 45 "module": "flask", 46 "env": { 47 "FLASK_APP": "app.py" 48 }, 49 "args": [ 50 "run", 51 "--no-debugger", 52 "--no-reload" 53 ], 54 "jinja": true 55 }, 56 { 57 "name": "Python: Current File (External Terminal)", 58 "type": "python", 59 "request": "launch", 60 "program": "${file}", 61 "console": "externalTerminal" 62 } 63 ] 64}

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

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

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

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

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

EbXpJ6bp

2018/12/08 01:20

VSCode内で実行ということですが、tasks.jsonまたはlaunch.jsonの使用した方の内容も記載してもらえると回答しやすいかと思います。
faker

2018/12/08 02:13

追記しました、よろしくお願いします。
faker

2018/12/13 04:19

エラーが発生しているところの相対パスを絶対パスにすることで確かに解決はするんですが、聞きたいのは”なぜ”このようなエラーが発生するかなんですよね VSCodeでは相対パスは使えないってことなんでしょうか?そんなことはないと思うのですが・・・
guest

回答3

0

'c:\Users[ユーザー名].vscode\extensions\ms-python.python-2018.11.0\pythonFiles\experimental\assets/pyxel_logo_38x16.png'

に開こうとしている画像ファイルはありますでしょうか。

投稿2018/12/07 12:25

kazto

総合スコア7196

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

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

faker

2018/12/07 13:12

ないですね・・・ 目的の画像ファイルは同じ階層にあるフォルダassetsの中のpyxel_logo_38x16.pngなんですよ PowerShellでは実行できたのに、VSCode内だと実行できないのが疑問でしょうがないです・・・
kazto

2018/12/07 13:34

プログラムを実行する場合、必ず「どのフォルダで実行するか」が決まっています。PowerShellの場合はどのフォルダにいるかで決まりますが、VSCodeのようなGUIプログラムの場合、プログラムが自分で決める場合もあります(プログラムがどう作られているか次第ですが)。 今回の場合、開きたい画像ファイルのパスを相対パスで記載しており、これはスクリプトからの相対パスではなく実行しているフォルダからの相対パスとなるため、意図しない場所を開こうとしてエラーになったという流れです。
faker

2018/12/08 02:28

うーん、なるほど・・・ https://blog.engineer-memo.com/2017/09/18/vs-code-%E3%81%AE%E4%BD%9C%E6%A5%AD%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%AE%E8%A6%9A%E6%9B%B8/ 上記ブログによると、VSCodeだとデフォルトの作業ディレクトリについては「"cwd": "${workspaceRoot}"」が設定されていて、最初にワークスペースで開いたフォルダで実行しているようなんですよね(解釈間違えてたらすいません)。でもその実行したいファイルがあるフォルダ自体をワークスペースとして開いているので、相対パス的には問題ない気がするんですよね・・・ 上記ブログにあるように実行したいファイルがあるフォルダで実行するように「cwd:""」を設定しても、同じエラーが発生して、正直よくわからないです......。
guest

0

pyxel.image(0).load 内で、カレントディレクトリではなく、スタックからディレクトリを取得しているようですね。

def load(self, x, y, filename):
dirname = os.path.dirname(inspect.stack()[-1].filename)
filename = os.path.join(dirname, filename)

ここを参照してください。
https://github.com/kitao/pyxel/blob/master/pyxel/image.py

投稿2018/12/15 13:19

Zugzy

総合スコア14

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

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

faker

2018/12/20 08:48

確かに、カレントディレクトリからじゃないですね・・・ありがとうございます! os.path.dirname(inspect.stack()[-1].filename)というのが、どうやらVSCodeのPythonコンパイラの絶対パスのようだったので自分なりに調べて考えて, dirname = os.path.dirname("D:/Users/ユーザ名/Downloads/pyxel-master/pyxel-master/pyxel/examples") と書いてみたのですが、実行できませんでした。これはなぜでしょうか・・・? 重ね重ね質問申し訳ないですが、もしお時間いただけるようでしたらよろしくお願いします・・・
guest

0

ファイルパスの書き方が間違っているだけです。

スラッシュをバックスラッシュ2つに変えてください。

Python

1pyxel.image(0).load(0, 0, "assets\pyxel_logo_38x16.png")

投稿2018/12/07 11:30

s4i

総合スコア139

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

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

faker

2018/12/07 13:10

ダメでした、エラーが発生します・・・ PowerShellでは実行できているので、コード自体に問題はないと思うのですが・・・ ちなみに発生したエラーはこれです 例外が発生しました: FileNotFoundError [Errno 2] No such file or directory: 'c:\Users\[ユーザ名]\.vscode\extensions\ms-python.python-2018.11.0\pythonFiles\experimental\assets\pyxel_logo_38x16.png' File "C:\Users[ユーザ名]\Downloads\pyxel-master\pyxel-master\pyxel\examples\01_hello_pyxel.py", line 7, in __init__ pyxel.image(0).load(0, 0, "assets\pyxel_logo_38x16.png") File "C:\Users[ユーザ名]\Downloads\pyxel-master\pyxel-master\pyxel\examples\01_hello_pyxel.py", line 20, in <module> App()
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問