Blenderで怪しい線が表示される

年末にBlenderでとある.blendファイルを開いたら意味不明な(設定してない)線が多数表示される現象が発生。

作成時に使用したBlenderとのバージョンの齟齬の問題かと、使用側のバージョンも変更・更新しても改善せず。線がちらちらと邪魔だし、どうも物理エンジンでのアニメーションも遅くなっている感じがする。

年明けに、別のパソコンで作業しても問題なかった別のファイルを、今回この特定のパソコンで開いてみると同様の現象が発生した。どうもこのパソコン自体の問題のようなので、再度Blenderを2.81に更新したり、2.80にダウングレードしたり、パソコン再起動して再インストールしたり、個人設定フォルダの「%AppData%\Roaming\Blender Foundation」を丸々削除してみたりもしたが解決できなかった。

ちょっと原因が思いつかない…。Blender側ではなくて、パソコン側の構成に問題があるのか??

東芝レグザパソコン。Intel Core i7-4700MQ 2.4GHz, Windows 10 64bit (←購入時のWindows 8.1?から更新)

TeraTerm: INT_DIVIDE_BY_ZEROで起動せず⇒AlphaBlend値のせいだった

いきなりTeraTermがエラーで起動できなくなってしまった。

Exception: INT_DIVIDE_BY_ZERO と出ているが、パソコン再起動か、TeraTermの再インストールで何とかなるか??

で、パソコンを再起動してみても変化せず、そう言えばと考え直してみると、昨日にTeraTermの表示ウィンドウを少し透明化しようと、「その他の設定⇒表示」から「半透明度」の設定を行なったのを思い出した。

元々の値は「255」なのだが、これを少し下げて「245」にしていた。設定時には半透明表示も動作していて問題なかったのだが、その設定をTERATERM.INIに保存して、TeraTerm自体を再起動する際にエラーになるらしい。

いったん、C:\Program Files (x86)\teraterm\TERATERM.INIを別名に退避しておいて、その状況であればTeraTermが起動できることを確認した。テキストエディタでTERATERM.INIファイルを開くと該当する「AlphaBlend=245;」の行があったので、これを元の255に戻すと問題なく動作した。

他の値でもダメなのかと、「0」「10」やら「254」等も試してみたが、どれも同じように起動せず「255」でないとダメらしい。エラーからすると整数値割りの問題のようなので、255/255なら値が1で問題ないが、被除数が255未満の場合は1未満の値が整数化されて0となってエラーが発生しているのかもしれない。

以前のTeraTermであれば、設定ファイルに値を保存していても問題なかった気はするので、最近のTeraTermのバージョンの問題かも(手元の現行版は4.83 SVN# 5602)。

TeraTermの最新版を確認すると4.105だった(改めて確認すると4.86はだいぶ古くて2014年のものだった)。新版に入れ替えると、AlphaBlendの値を保存しても問題なく起動できた。

また、不透明度の設定で「アクティブ時」「非アクティブ時」の設定ができるようになっていたので、アクティブ時=250、非アクティブ時=245と微妙に変えてみた。

アクティブ時の設定値に関してはAlphaBlendActiveという設定名になるもよう。

リンク:

[追記]
過去のチケットに本件が上がっていたようで、v4.102で修正されたらしい。

Anaconda: 別環境構築時の追加設定(Anaconda Prompt, Spyder)

Anaconda: ChromeDriverがインストールできない⇒別環境構築の続き)

「conda create -n XXXX」で新環境を構築すると環境自体は構築されても、WindowsメニューのAnacondaの項目に出てくる「Anaconda Powershell Prompt」「Anaconda Prompt」「Jupyter Notebook」「Spyder」等がその環境に対応した形で追加されない。また、Anaconda Navigatgorで環境を新規追加(Environments⇒Create)した際には、これらの項目も自動で設定されるのかと思ったが試すとそうではなかった(前には自動で増えていた覚えもあるので、Navigator挙動が変わったか、何か指定が抜けているのかも)。

さしあたって、「Anaconda Prompt」と「Spyder」は使うので、これを新環境用に追加した。

まず、SpyderはAnaconda Navigatorから追加。Navigator上の「Applications on …」で希望の環境名を選択。下記ではcondaで新構築した「selenium」を環境として選択している。この状態からSpyderをインストール。


これを実行すると、Windowsメニューに環境名が付加された形で「Spyder」と「Reset Spyder Settings」も追加された。

「Anaconda Prompt」については、Anaconda Navigator上に該当しそうな追加用メニューがなく、しかたないので、現行のプロンプトをコピーして対応することにした。

Windowsメニューから、「Anaconda Prompt」⇒「その他」⇒「ファイルの場所を開く」

ショートカットの保存フォルダ内で、コピー元の「Anaconda Prompt」を選択して「Ctrl-C」「Ctrl-V」でショートカットを複製し、さらにそのショートカットを希望の環境名(ここでは「selenium」)に変更。

ショートカットのプロパティを右クリックで表示し、リンク先のactivate.batへの引数にその環境(ここではselenium)の場所を指定する「\envs\selenium」を追記して、さらにコメントの丸括弧内を「(selenium)」に変更し「OK」。

これでWindowsメニューに、追加した環境の「Anaconda Prompt」が出てくるようになる。これで、始めから使いたい環境となっているプロンプトを起動することができる。

Anaconda: ChromeDriverがインストールできない⇒別環境構築

Seleniumでのブラウザ自動化を行なおうとしたら、PhantomJSは廃止されてるっぽくて、Firefox用のgeckodriverは最新のFirefoxに対応できていないのか、ブラウザは起動するものの画面が表示されたまま先に進まない。

それで、chromedriverをインストールしようとしても、Python3.7には対応していないとエラーが出てしまう。

(base) > conda install python-chromedriver-binary
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: \
Found conflicts! Looking for incompatible packages.
This can take several minutes.  Press CTRL-C to abort.
Examining certifi:  54%|█████████████████████████████████▉                             | 21/39 [00:00<00:00, 71.11it/-
Examining wheel:  92%|████████████████████████████████████████████████████████████     | 36/39 [00:00<00:00, 59.90it/s]
Examining wincertstore:  97%|████████████████████████████████████████████████████████▌ | 38/39 [00:00<00:00, 59.90it/s]\
failed                                                                                                                 /

UnsatisfiableError: The following specifications were found
to be incompatible with the existing python installation in your environment:

Specifications:

  - python-chromedriver-binary -> python[version='>=2.7,<2.8.0a0|>=3.5,<3.6.0a0|>=3.6,<3.7.0a0']

Your python: python=3.7

If python is on the left-most side of the chain, that's the version you've asked for.
When python appears to the right, that indicates that the thing on the left is somehow
not available for the python version you are constrained to. Note that conda will not
change your python version to a different minor version unless you explicitly specify
that.

The following specifications were found to be incompatible with each other:

Package certifi conflicts for:
python=3.7 -> pip -> setuptools -> certifi[version='>=2016.09|>=2016.9.26']
python-chromedriver-binary -> python[version='>=3.5,<3.6.0a0'] -> pip -> setuptools -> certifi[version='>=2016.09|>=2016.9.26|>=2017.4.17']
Package ca-certificates conflicts for:
python-chromedriver-binary -> python[version='>=3.5,<3.6.0a0'] -> ca-certificates
python=3.7 -> openssl[version='>=1.1.1a,<1.1.2a'] -> ca-certificates
Package wincertstore conflicts for:
python-chromedriver-binary -> python[version='>=3.5,<3.6.0a0'] -> pip -> setuptools -> wincertstore[version='>=0.2']
python=3.7 -> pip -> setuptools -> wincertstore[version='>=0.2']
Package setuptools conflicts for:
python=3.7 -> pip -> setuptools
python-chromedriver-binary -> python[version='>=3.5,<3.6.0a0'] -> pip -> setuptools
Package pip conflicts for:
python=3.7 -> pip
python-chromedriver-binary -> python[version='>=3.5,<3.6.0a0'] -> pip
Package wheel conflicts for:
python=3.7 -> pip -> wheel
python-chromedriver-binary -> python[version='>=3.5,<3.6.0a0'] -> pip -> wheel
Package msgpack-python conflicts for:
python-chromedriver-binary -> python[version='>=3.5,<3.6.0a0'] -> pip -> cachecontrol -> msgpack-python

このため、chromedriverメインで別環境を構築することにした。Pythonは3.6.9が選択された。

(base) >conda create -n selenium python-chromedriver-binary
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: C:\Users\oshiro\Anaconda3\envs\selenium

  added / updated specs:
    - python-chromedriver-binary

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    certifi-2019.11.28         |           py36_0         157 KB
    chromedriver-binary-2.38   |                0         2.7 MB
    pip-19.3.1                 |           py36_0         1.9 MB
    python-3.6.9               |       h5500b2f_0        15.9 MB
    python-chromedriver-binary-2.38.0|           py36_0          48 KB
    setuptools-42.0.2          |           py36_0         681 KB
    wheel-0.33.6               |           py36_0          58 KB
    wincertstore-0.2           |   py36h7fe50ca_0          14 KB
    ------------------------------------------------------------
                                           Total:        21.5 MB

The following NEW packages will be INSTALLED:

  certifi            pkgs/main/win-64::certifi-2019.11.28-py36_0
  chromedriver-bina~ pkgs/main/win-64::chromedriver-binary-2.38-0
  pip                pkgs/main/win-64::pip-19.3.1-py36_0
  python             pkgs/main/win-64::python-3.6.9-h5500b2f_0
  python-chromedriv~ pkgs/main/win-64::python-chromedriver-binary-2.38.0-py36_0
  setuptools         pkgs/main/win-64::setuptools-42.0.2-py36_0
  sqlite             pkgs/main/win-64::sqlite-3.30.1-he774522_0
  vc                 pkgs/main/win-64::vc-14.1-h0510ff6_4
  vs2015_runtime     pkgs/main/win-64::vs2015_runtime-14.16.27012-hf0eaf9b_0
  wheel              pkgs/main/win-64::wheel-0.33.6-py36_0
  wincertstore       pkgs/main/win-64::wincertstore-0.2-py36h7fe50ca_0

Proceed ([y]/n)? y

Downloading and Extracting Packages
chromedriver-binary- | 2.7 MB    | ############################################################################ | 100%
python-3.6.9         | 15.9 MB   | ############################################################################ | 100%
setuptools-42.0.2    | 681 KB    | ############################################################################ | 100%
wincertstore-0.2     | 14 KB     | ############################################################################ | 100%
pip-19.3.1           | 1.9 MB    | ############################################################################ | 100%
certifi-2019.11.28   | 157 KB    | ############################################################################ | 100%
python-chromedriver- | 48 KB     | ############################################################################ | 100%
wheel-0.33.6         | 58 KB     | ############################################################################ | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate selenium
#
# To deactivate an active environment, use
#
#     $ conda deactivate

(base) >conda activate selenium
(selenium) >

これでChromeDriverのインストールはできた。

先の別環境の構築時に指定していてもよかったのだが、様子見で段階的に後からseleniumとBeautifulSoupのインストール。

まずは、Selenium:

(selenium) >conda install selenium
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: C:\Users\oshiro\Anaconda3\envs\selenium

  added / updated specs:
    - selenium

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    asn1crypto-1.2.0           |           py36_0         162 KB
    cffi-1.13.2                |   py36h7a1dbc1_0         227 KB
    cryptography-2.8           |   py36h7a1dbc1_0         569 KB
    idna-2.8                   |           py36_0         111 KB
    pycparser-2.19             |           py36_0         171 KB
    pyopenssl-19.1.0           |           py36_0          87 KB
    pysocks-1.7.1              |           py36_0          31 KB
    selenium-3.141.0           |   py36he774522_0         805 KB
    six-1.13.0                 |           py36_0          27 KB
    urllib3-1.25.7             |           py36_0         166 KB
    win_inet_pton-1.1.0        |           py36_0           9 KB
    ------------------------------------------------------------
                                           Total:         2.3 MB

The following NEW packages will be INSTALLED:

  asn1crypto         pkgs/main/win-64::asn1crypto-1.2.0-py36_0
  ca-certificates    pkgs/main/win-64::ca-certificates-2019.11.27-0
  cffi               pkgs/main/win-64::cffi-1.13.2-py36h7a1dbc1_0
  cryptography       pkgs/main/win-64::cryptography-2.8-py36h7a1dbc1_0
  idna               pkgs/main/win-64::idna-2.8-py36_0
  openssl            pkgs/main/win-64::openssl-1.1.1d-he774522_3
  pycparser          pkgs/main/win-64::pycparser-2.19-py36_0
  pyopenssl          pkgs/main/win-64::pyopenssl-19.1.0-py36_0
  pysocks            pkgs/main/win-64::pysocks-1.7.1-py36_0
  selenium           pkgs/main/win-64::selenium-3.141.0-py36he774522_0
  six                pkgs/main/win-64::six-1.13.0-py36_0
  urllib3            pkgs/main/win-64::urllib3-1.25.7-py36_0
  win_inet_pton      pkgs/main/win-64::win_inet_pton-1.1.0-py36_0

Proceed ([y]/n)? y

Downloading and Extracting Packages
asn1crypto-1.2.0     | 162 KB    | ############################################################################ | 100%
six-1.13.0           | 27 KB     | ############################################################################ | 100%
cffi-1.13.2          | 227 KB    | ############################################################################ | 100%
pysocks-1.7.1        | 31 KB     | ############################################################################ | 100%
cryptography-2.8     | 569 KB    | ############################################################################ | 100%
win_inet_pton-1.1.0  | 9 KB      | ############################################################################ | 100%
urllib3-1.25.7       | 166 KB    | ############################################################################ | 100%
idna-2.8             | 111 KB    | ############################################################################ | 100%
selenium-3.141.0     | 805 KB    | ############################################################################ | 100%
pycparser-2.19       | 171 KB    | ############################################################################ | 100%
pyopenssl-19.1.0     | 87 KB     | ############################################################################ | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

次にBeautifulSoup:

(selenium) >conda install beautifulsoup4
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: C:\Users\oshiro\Anaconda3\envs\selenium

  added / updated specs:
    - beautifulsoup4

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    beautifulsoup4-4.8.1       |           py36_0         155 KB
    soupsieve-1.9.5            |           py36_0          61 KB
    ------------------------------------------------------------
                                           Total:         216 KB

The following NEW packages will be INSTALLED:

  beautifulsoup4     pkgs/main/win-64::beautifulsoup4-4.8.1-py36_0
  soupsieve          pkgs/main/win-64::soupsieve-1.9.5-py36_0

Proceed ([y]/n)? y

Downloading and Extracting Packages
beautifulsoup4-4.8.1 | 155 KB    | ############################################################################ | 100%
soupsieve-1.9.5      | 61 KB     | ############################################################################ | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

(selenium) >

これで使用の準備が整った。

下記を実行するとChromeが立ち上がって、Googleにアクセスしそのページタイトルを印字する。ヘッダレスでも起動できるようだが、開発段階ではブラウザが表示されていたほうが動作が確認しやすそう。

from selenium import webdriver

browser = webdriver.Chrome()         # ブラウザとしてchromedriverを選択
browser.get("http://www.google.com") # Googleにアクセス
print(browser.title)                 # ページタイトル「Google」と表示

browser.close()                      # タブ?を閉じる
browser.quit()                       # ブラウザ終了

Anaconda: Spyderの配色スキーム一覧

Anaconda Spyderの色合いが明る過ぎて、このところ他のエディタやアプリもダーク系にしているので、変更しようとしてみた。

「設定⇒構文強調の配色⇒色スキームのマネージ」からスキームを選ぶ。現在のスキーム一覧は10件。

一覧はアルファベット順なのだが、比較のために色合いで並べ替えた。※既にどこかに一覧はありそうな気はするが。

ダーク系:「Emacs」「Spyder Dark」「Monokai」「Zenburn」「Solarized Dark」

ライト系:「Solarized Light」「Spyder」「Scintilla」「Pydev」「IDLE」

ダーク系から「Monokai」を選んでみた。(一覧のpdf版⇒Spyder3 スキーム一覧20191117.pdf

あと、おまけで、設定ダイアログから配色サンプル箇所とスキーム名を抜き出して画像で保存する処理に使ったPythonスクリプト。

# spyder-view-crop.py: Anaconda Spyderのスキーム配色の設定ダイアログからサムネイルを作成
#
#  先に設定ダイアログでスキームを切り替えたキャプチャー画像をspyder01~.pngのように保存しておくこと。

from PIL import Image
import glob
import os

dirname = os.getcwd()
print(dirname)
files = glob.glob(os.path.join(dirname, 'spyder[01]*.png'))
for f in files:
    tmpname = os.path.basename(f)
    basename, ext = os.path.splitext(tmpname)
    print(tmpname)
    img = Image.open(f)
    
    x, y, w, h = [161, 140, 152, 22] # スキーム名の適当な座標を指定
    title = img.crop((x, y, x+w, y+h))
    x, y, w, h = [317, 140, 234, 196] # 配色例の適当な座標を指定
    crop = img.crop((x, y, x+w, y+h))
    
    img2 = Image.new('RGB', \
        (max(title.width, crop.width), title.height+crop.height), \
        title.getpixel((0,0)))
    img2.paste(title, (1, 0))
    img2.paste(crop, (0, title.height))
    
    img2.save(os.path.join(dirname, "crop_"+basename+ext))