日々精進

新しく学んだことを書き留めていきます

OSSを使用した時の著作権表示

以下のように各ライブラリの名前・作者・URL、ライセンスを記載し、その下に各種OSSライセンス(MITとかApache Licenseとか)の条文を載せる。

Lightweight SQLite3 wrapper for C++
- Copyright(c) 2014 Daniel Beer <dlbeer@gmail.com>
- URL: http://dlbeer.co.nz/oss/sqlite.html
- License: ISC License

~
-----------------------------------------------

MIT License

~

https://www.ipa.go.jp/files/000028284.pdf

著作権表示を作っている時に困ったのが作者の調べ方。一つずつGithubを見に行ってLICENSE.txtなどを見て確認したが以下のサイトの方法をちょっと修正して作者も出力するようにすれば良かったかも・・

Pythonライブラリのライセンス情報を一括出力する方法 – つまさぽ(妻のサポート)

windowsでconda仮想環境を作るとapi-ms-win-core-console-l1-1-0.dllなどのDLLが2つずつインストールされる

windows環境でminicondaを使って仮想環境を作ると以下のパスに仮想環境のファイルが保存される。 C:\Users\username\AppData\Local\Continuum\miniconda3\envs\envname

上記と、以下のパスに「api-ms-win-core-console-l1-1-0.dll」などいくつかの同じDLLファイルが保存されている。

C:\Users\username\AppData\Local\Continuum\miniconda3\envs\envname\Library\bin

全く同じファイルを2箇所に保存するのはなぜだろうと思い調べてみると、原因は以下っぽい。

  • これらのファイルはvs2015_runtimeに含まれる
  • vs2015_runtimeのパッケージ(vs2015_runtime-14.28.29325-h5e1d092_4.tar.bz2とか)の中にはroot階層とLibrary\binの両方に同じDLLファイルがある。
  • なので意図的かどうか分からないがvs2015_runtimeを作った人が同じファイルを2箇所に保存するようにvs2015_runtimeを作ったっぽい

anaconda.org

conda env createでconda環境を作ると「ERROR: No matching distribution found for torchaudio==0.7.2」エラー

windows環境でpytorchをインストールした後、conda env exportでyamlファイルを出力し、そのファイルを使ってconda env createするとエラーが出る。

原因は以下によるとwindowsをサポートしていないこと。でも手動だとインストールできるし何か違う気がする。。

github.com

手動でインストールするときはpytorch channelを指定するのでyamlファイルの中でもpytorch channelを設定してみたけどだめ。

しょうがないので今のところconda env createした後でpytorchをインストールするコマンドを実行するようにしてます。。

pythonプログラムを実行した時に、自分の環境だとエラーが出ないが他の人の環境だと「No module named~」エラーが出る

conda環境もアプリのコードも同じなのになぜ・・と思ったら、自分の環境ではuser siteに必要なパッケージが入っているが他の人には入っていなかったためだった。

user siteとはユーザ単位で利用するパッケージをインストールするところで、以下のようなところに保存される。

C:\Users\username\AppData\Roaming\Python\Python37\site-packages

user siteをモジュール検索パスに追加していると環境差異が発生しやすくなるので除外した方が良い。除外するには以下を環境変数に設定する。

PYTHONNOUSERSITE=1

モジュール検索パスやuser siteを使う設定になっているかどうかは以下を実行すると調べられる。

python -m site

参考:

qiita.com

stackoverflow.com

pythonnetでpythonモジュールを実行すると「No module named~」エラー

コマンドプロンプトから python main.py のように実行すると問題無いのにpythonnetから実行すると「No module named~」エラーになる、というケースがあった。

原因はpythonnetが.pthファイルを読んでくれないこと。以下のサイトには

.pth ファイルを読み込んで処理しているのは site モジュールです。このモジュールは通常 Python インタプリタの初期化中に読み込まれるため通常は問題になりません。しかしインタプリタが -S オプション付で呼び出された時には site パッケージの自動インポートが無効となります。結果、 .pth ファイルは読み込まれないこととなります。

と記載されている。これと同じことがpythonnetから実行した時にも起きているのかも知れないが、未検証。.pthで設定しているモジュール検索パスをPYTHONPATHに設定することで直った。

blue-red.ddo.jp

pythonnetから実行した時に結構No module namedエラーが出ることがあるので 以下のようにコマンドプロンプトから実行して問題を切り分けることが多い。

set PYTHONHOME=C:\conda_env
set PYTHONPATH=C:\app
cd C:\app
C:\conda_env\python.exe
import sys;print(sys.path)
sys.path.remove("C:\\Users\\username\\AppData\\Roaming\\Python\\Python37\\site-packages")
import win32con

エクセルで画像へのリンクを画像に変換する

エクセルですでにある画像へのリンクを画像にするのは以下の手順でできる。

  • 画像へのリンクを選択してコピー。その後削除
  • Alt+E, Sの後形式を選択して貼り付ける

これでエクセルファイルの容量すごい増えるけど、他の人に渡してもリンク切れにならない。