Visual Studio Code の "workspace" がよく分から~ん、海外でも混乱中?

f:id:ts0818:20191231141625j:plain

かれらは、持参した温度計を岩盤の孔の中に差し込んだ。岩盤温度は摂氏一二〇度で、火薬類取締法規による使用制限温度の三倍のメモリをしめしていた。
天知も根津も、顔を青ざめて黙りこくっていた。
「これじゃ、自然発火するのは当たり前じゃないか」
係官は目をいからせていった。

高熱隧道 - Wikipedia

⇧  皆さん、ご存知の黒部ダム。その水量を利用して発電するための発電所を、「日本電力」が作ろうする話を元にした小説を読みました~。


高熱隧道 (新潮文庫)

⇧  日本の技術力は多大な犠牲の上に成り立っているということを痛感させられます。泡雪崩ってのも初めて知りました。

泡雪崩(ほうなだれ)は、雪崩の一種。ホウ雪崩とも表記する。大規模な煙型乾雪表層雪崩を指し、新潟県富山県では単にホウとも呼ぶ。

泡雪崩 - Wikipedia

通常の雪崩のような雪塊の落下とは違い、雪崩を構成する雪煙が最大で200km/h以上の速度で流下する。その衝撃力は数百キロパスカル(建造物などを破壊するほどの力に相当する)に達し、大きな被害をもたらすと考えられている。

泡雪崩 - Wikipedia

この破壊力に関して、爆風が発生すると誤解されることが多いが、実際は、雪煙が空気と雪粒の混合体であるがゆえ生じる力による。この誤解は『高熱隧道』の記述によって広まったとされている。

泡雪崩 - Wikipedia

⇧  爆発は起きないけど、凄まじい被害をもたらすらしいです。
 

 日本の技術と言えば、

tech.nikkeibp.co.jp

 Preferred Networks(PFN)は2019年12月5日、研究開発の基盤技術である深層学習フレームワークを「PyTorch」に順次移行すると発表した。PyTorchは米フェイスブックFacebook)が開発したオープンソースの深層学習フレームワーク。PFNはこれまで自社で開発したオープンソースの深層学習フレームワーク「Chainer」を使っていた。

PFNが深層学習基盤「Chainer」の新機能開発を終了、Facebookの「PyTorch」へ移行 | 日経 xTECH(クロステック)

アメリカ強ぇ~、シリコンバレーが何ぼのもんじゃいって言えない辛さ。

まぁ、そんなこんなで、久々にVisual Studio CodePythonを使ってみようかと思った次第です。

 

なんか、「有吉ぃぃeeeee!~そうだ!今からお前んチでゲームしない?」で、

www.tv-tokyo.co.jp

⇧ 有吉さんが歌ってたんで調べてみたら、

爆乳戦隊パイレンジャー参上!)

パイ、パイ、パ、パ、パイ、 パイレンジャー 

パイ、パイ、パ、パ、パイ、 パイレンジャー 

パイ、パイ、パ、パ、パイ、 パイレンジャー 

パイ、パイ、パイ、 パイ、パ、パイパイ、パ~イ♪

地球の平和守るため遠いとこからやってきた 

爆乳戦隊パイレンジャー/爆乳戦隊パイレンジャー-カラオケ・歌詞検索|JOYSOUND.com

⇧  手島の優の姐さ~ん!  

 

はい、今回も全く関係ない話で開幕ですが、どうもボクです。

 

本当は、Dapr (Distributed Application Runtime)ってのを試してみたかったんですが、

github.com

Any language, any framework, anywhere

Dapr is a portable, serverless, event-driven runtime that makes it easy for developers to build resilient, stateless and stateful microservices that run on the cloud and edge and embraces the diversity of languages and developer frameworks. 

GitHub - dapr/dapr: Dapr is a portable, event-driven, runtime for building distributed applications across cloud and edge.

⇧ って歌っているのにも関わらず、

For Windows user, ensure that Docker Desktop For Windows uses Linux containers.

 

docs/environment-setup.md at master · dapr/docs · GitHub

⇧  Windows 10 Home は例のごとく除け者っぽいんですな。

 

っていうわけで、Visual Studio Code の "workspace" についてです。レッツトライ~。

 

事の発端は?

パイ、パイ、パ、パ、パイ、pythonじゃ~♪ ってことで、Visual Studio Codepythonのライブラリをインポートしようとしたら、

f:id:ts0818:20191202224835p:plain

⇧  「unresolved import 」ってなると。

ちなみに、「.venv」フォルダ(python仮想環境)を作成して、

f:id:ts0818:20191202225957p:plain

f:id:ts0818:20191202230104p:plain

beautifulsoup4系っていうライブラリをインストール。

f:id:ts0818:20191202230315p:plain

⇧  Successfully buit bs4 ってなってるんで、インストールは成功してると思うんよね。

f:id:ts0818:20191202225214p:plain

⇧ 「C:\Users\Toshinobu\Desktop\soft_work\python_work\webScraping\.venv\Lib\site-packages\bs4」 にもおるしね。

 

Visual Studio Code の問題だとは思うんだけど...

まぁ、何というか、Visual Studio Code の問題だとは思うんだけど、

github.com

that is how i have fix it
delete the folders ~/.config/Code and ~/.vscode.
You may want to backup any code snippets in ~/.config/Code/User/snippets/

Python unresolved import issue · Issue #887 · microsoft/python-language-server · GitHub

⇧  おそらく、Visual Studio Codeの設定系のディレクトリを消せって言ってるんだと思うんだけども、ってことは、Visual Studio Codeの設定系をしていけば良いんではないかとは思うんだけども、

このVisual Studio Codeの設定の方法ってのが定まってないっぽいんすよね...

www.it-swarm.net

ワークスペースがとても混乱するのはなぜですか?

VSCodeはUI全体で一貫してこの用語を使用しません(これに対処するために GitHubの問題 を開きました)。上記のようにワークスペースを指すこともあれば、特に.code-workspaceファイルに関連付けられているプロジェクトとしてワークスペースを指すこともあります。

Python unresolved import issue · Issue #887 · microsoft/python-language-server · GitHub

⇧  で、ワークスペースの意味合いが変わってくるんであると...定義を曖昧にするっていう歴史の繰り返しは永久に無くなりそうにないね、この業界。

Visual Studio Codeワークスペースについて、GitHubでもissue が上がってると。

 

github.com

We decided to call both single folders and workspace file the "workspace" you are in. You could name the one "single-folder workspace" and the other "multi-root workspace", but then again, a multi-root workspace can have 0-1 roots too.

Consistency with the use of "workspace" · Issue #77718 · microsoft/vscode · GitHub

⇧  GitHubのissueも全くクローズする気配ないしね...

 

まぁ、言ってることとしては、

  • .vscode ← single-folder workspace
  • .code-workspace ← multi-root workspace

ってことにしとけば良いんじゃないっすか?ということらしいんだけど、

code.visualstudio.com

Note: A VS Code "workspace" is usually just your project root folder. Workspace settings as well as debugging and task configurations are stored at the root in a .vscode folder. You can also have more than one root folder in a VS Code workspace through a feature called Multi-root workspaces.

Visual Studio Code User and Workspace Settings

⇧  公式にあるように、

Visual Studio Codeでは一般的に、プロジェクト1つの時のプロジェクトのルートディレクトリのことを「workspace」って呼ぶわな』

ってことらしく、

code.visualstudio.com

You can work with multiple project folders in Visual Studio Code with multi-root workspaces. This can be very helpful when you are working on several related projects at one time. For example, you might have a repository with a product's documentation which you like to keep current when you update the product source code.

Multi-root Workspaces in Visual Studio Code

⇧  マルチプロジェクトの時に使うのが、「.code-workspace」ってことみたいね。

 

なので、Visual Studio Codeで、「workspace」っていう場合は、「.vscode」フォルダのほうを指すらしいし、「.vscode」フォルダってのは、

It is easy to configure Visual Studio Code to your liking through its various settings. Nearly every part of VS Code's editor, user interface, and functional behavior has options you can modify.

Visual Studio Code User and Workspace Settings

⇧  Visual Studio Codeの設定を行える「settings」の中の、

VS Code provides two different scopes for settings:

  • User Settings - Settings that apply globally to any instance of VS Code you open.
  • Workspace Settings - Settings stored inside your workspace and only apply when the workspace is opened.

Workspace settings override user settings. Workspace settings are specific to a project and can be shared across developers on a project.

Visual Studio Code User and Workspace Settings

⇧  「User Settings」「Workspace Settings」の中の、「Workspace Settings」ってほうのことを言ってるかと。

んで、この設定ファイルについては、

By default VS Code shows the Settings editor, but you can still edit the underlying settings.json file by using the Open Settings (JSON) command or by changing your default settings editor with the workbench.settings.editor setting.

Visual Studio Code User and Workspace Settings

⇧  Visual Studio Codeからじゃくても編集ができるみたいで、

Depending on your platform, the user settings file is located here:

  • Windows %APPDATA%\Code\User\settings.json
  • macOS $HOME/Library/Application Support/Code/User/settings.json
  • Linux $HOME/.config/Code/User/settings.json

The workspace settings file is located under the .vscode folder in your root folder.

Note: In case of a Multi-root Workspace, workspace settings are located inside the workspace configuration file.

Visual Studio Code User and Workspace Settings

⇧ 以下のディレクトリの設定ファイルが、「User settings」のほうで、「Workspace Settings」のほうは、ルートフォルダの中の「.vscode」って中にあるらしいと。

ただ、ルートフォルダってのがどこのことを言ってんだか分からんのだけどね...

なんか、よくある質問でも、

VS Code says "Unable to write settings."

If you try to change a setting (for example turning on Auto Save or selecting a new Color Theme) and you see "Unable to write settings. Please open User Settings to correct errors/warnings in the file and try again.", it means your settings.json file is ill-formed or has errors. The errors can be as simple as a missing comma or setting value. Open the Settings editor File > Preferences > Settings (Code > Preferences > Settings on macOS) (Ctrl+,) and you should see the error highlighted with red squiggles.

Visual Studio Code User and Workspace Settings

⇧  からの~、

When does it make sense to use workspace settings?

If you're using a workspace that needs custom settings but you don't want to apply them to your other VS Code projects. A good example is language-specific linting rules.

Visual Studio Code User and Workspace Settings

⇧ 「Workspace Settings」の場所については、黙して語らず?

 

なんか、

Creating User and Workspace Settings

To open your user and workspace settings, use the following VS Code menu command:

  • On Windows/LinuxFile > Preferences > Settings
  • On macOSCode > Preferences > Settings

You can also open the Settings editor from the Command Palette (Ctrl+Shift+P) with Preferences: Open Settings or use the keyboard shortcut (Ctrl+,).

Visual Studio Code User and Workspace Settings

⇧ ってあるんで、Visual Studio Code 上で、 上記のような操作をすることで作成できるらしい。「.vscode」の中にどんなファイルができるかは説明してくれないと。

 

とりあえず、「.vscode」を作成しますか、つまり「workspace」の作成

IDE統合開発環境)みたいに良きに計らってくれるわけではないので、「.vscode」は自分から作ってあげないといかんのだと。

とりあえず、Visual Studio Code  で、「.vscode」を作りたいプロジェクトディレクトリを開いときます。(「.venv」を作っておいたディレクトリで。「.venv」はPythonの仮想環境らしいです、仮想マシンとかとは別物です、すみません、Python詳しくないのでよく分からんです。)

f:id:ts0818:20191229224721p:plain

「ファイル(F)」>「基本設定」>「設定」で。

f:id:ts0818:20191229224651p:plain

「設定」が開いて、「ユーザー」「ワークスペース」ってタブが表示されているので、 

f:id:ts0818:20191229225136p:plain

ワークスペース」タブを選択した状態で「設定」の右の方にあるアイコンf:id:ts0818:20191229225737p:plain をクリック。

f:id:ts0818:20191229225659p:plain

そうすると、「.vscode」フォルダが追加され、その中に「settngs.json」って設定ファイルができます。

f:id:ts0818:20191229225850p:plain

「settngs.json」を開くと、空っぽなので、ここに設定を追加していくことで、このプロジェクト独自の設定を追加できるということかと。

f:id:ts0818:20191229230301p:plain

今回は、Visual Studio Code 上でPythonが動作して欲しいのであると。

 

qiita.com

qiita.com

⇧  上記サイト様がまとめてくださっていたので、ありがたく使わせていただきます。

あとは、片っ端からインストールしていく感じで。

f:id:ts0818:20191229230951p:plain

んで、エラー。

f:id:ts0818:20191229232858p:plain

どうやら、

qiita.com

Pythonのバージョンがかみ合ってないらしい...

変えてみたけど、ライブラリが読み込めない問題は変わらず。

f:id:ts0818:20191229233504p:plain

github.com

⇧  やってみたけど、変わらんしね...

そもそも、「.vscode/settings.json」に設定したライブラリのインストールが、

f:id:ts0818:20191230105838p:plain

f:id:ts0818:20191230105738p:plain

⇧  失敗してるっぽい気がしてならんのだが...Visual Studio Codeブラックボックス化が半端ない...

なんか、

// "terminal.integrated.shell.windows": "C:\\WINDOWS\\system32\\cmd.exe"    

コメントアウトしてVisual Studio Code を再起動したら、

f:id:ts0818:20191230111420p:plain

⇧  エラーの内容は変わったけども、エラー。 

github.com

Seems to be fixed with #2924.
Upgrade pipenv and it works.

pip install pipenv -U
pipenv install

Running pipenv gives TypeError: 'module' object is not callable · Issue #2871 · pypa/pipenv · GitHub

⇧ 「pipenv」をアップグレードすれば良いらしい。

f:id:ts0818:20191230112351p:plain

f:id:ts0818:20191230112711p:plain

f:id:ts0818:20191230112823p:plain

 

f:id:ts0818:20191230113019p:plain

まぁ、変わらんのだけどね...

 

ti-tomo-knowledge.hatenablog.com

これは使用したいパッケージモジュールが指定しているpythonpath直下ではなく、その入れ子の中に存在している場合に発生するようです。
Eclipseがそこまで対応していないのかpydevのバグなのかわかりませんが、とりあえずEclipseとpydevを使った場合の特有のエラーのようです。

pydevで発生するUnresolved import errorの解決方法 - 親バカエンジニアのナレッジ帳

⇧ 上記サイト様によりますと、パッケージモジュールにpythonpath が通ってないことによるっぽいらしいですと。

Eclipseの現象らしいですけど、Visual Studio Code でも同様っぽい気がしますね。

 

んで、

superuser.com

Adding "python.analysis.disabled": ["unresolved-import"], in settings solves this.

ide - How to suppress some Python errors/warnings in VS Code - Super User

⇧  Visual Studio Code でも、警告を無視ってことができるらしい。

まぁ、Visual Studio Code の問題であって、python自体はライブライを問題なく実行できるらしいので、警告を無視で。

駄目でしたけど...

 

ja.stackoverflow.com

⇧  上記サイト様を参考に、「beautifulSoup4」がインストールされてるか確認。

f:id:ts0818:20191230214110p:plain

f:id:ts0818:20191230214321p:plain

⇧  「C:\Users\Toshinobu\Desktop\soft_work\python_work\webScraping\.venv\Lib\site-packages」にインストールされてるっぽい。

つまり、使ってるpythonによってライブラリも変わってくるらしい。

なので、

f:id:ts0818:20191231131016p:plain

⇧  左下に示されてる Pythonのところをクリックして、

⇩ .venvにある Python を選択します。

f:id:ts0818:20191231130835p:plain

そうすると、BeautifulSoup のほうは読み込めるように。

f:id:ts0818:20191231131219p:plain

⇧  urllib.request が、.venv のほうのライブラリとしてはインストールされとらんらしいので、.venv のほうの環境でインストールしました。

f:id:ts0818:20191231131853p:plain

でも、駄目だだったけど...

 

qiita.com

from . import module1 があれば __all__ = ['module1'] は不要なので __all__ は重複とは言える。逆に、__all__ だけでは import mypackage の時には自動 import してくれない。とはいえ、PEP8 に書かれていることなので、他の人も使う package として公開するときはちゃんと __all__ を書くのが良さそう。

自作 Package の submodule の import と flake8 - Qiita

⇧ 上記サイト様を参考に、「__all__」を使ったら、動きました。

Visual Studio Code で、開いたpythonファイル上で右クリックし、「ターミナルで Python ファイルを実行」で。

f:id:ts0818:20191231140715p:plain

実行されました。

f:id:ts0818:20191231140634p:plain


相変わらず、Visual Studio CodePython環境はよく分からんです...

Visual Studio Codeの「workspace」とは関係なくなったけど、Pythonのライブラリは、使ってるPythonに影響されてしまうってことですかね、というか、Pythonのプロジェクトのベストプラクティスってのが分からんからね、何とも言えんけども、.venv 環境で行く場合は、.venv 内でライブラリを全部管理したほうが良いんすかね?

今回もモヤモヤしか残らんかった...2019年の最後もスッキリせず終わるという。来年も頑張っていけるかしらね...

今回はこのへんで。