無洗米

プログラム書く

【Python】PyInstallerでPandasを利用するとエラーが出る話【ちょいネタ】

お久しぶりです。
しばらく書いてなかったorz

今回は、PyInstallerというPythonスクリプトをexe化してくれるライブラリで躓いたので、その解決方法を書こうかと思います。

Pandasというデータ分析で使うライブラリがあるのですが、それを使った処理をexe化して、実行してしばらくするとエラーが発生します。

その時のエラーの一部です。途中割愛してます。
(エラーが一瞬コマンドプロンプトで出るんだけどすぐ消えちゃうので、出た瞬間にキャプチャして、その画像をGoogleドライブでアップしGoogleドキュメントにすると文字起こししてくれるので便利)

Traceback (most recent call last):
File "site-packages pandas¥_init__.py", line 26, in <module> File "割愛", line 631, in exec module
exec(bytecode, module. _dict) File "site-packages\pandas¥ libs¥_init__.py", line 4, in <module> File "割愛", line 714, in load_module
module = loader . load_module(fullname) File "pandas¥_libs¥tslibs conversion.pxd”, line 11, in init pandas. _libs.tslib
File "割愛", line 714, in load_module
module = loader. Toad_module(fullname) File "pandas¥ Libs¥tslibs conversion.pyx", line 1, in init pandas. Libs.tslibs.conversion ModuleNotFoundError: No module named 'pandas. _libs.tslibs.np_datetime During handling of the above exception, another exception occurred:
per moduline 714, in bashišappdatax loca poti line 11, i
Traceback (most recent call last): File "割愛", line 7, in <module>

解決方法がわかりましたのでメモっときます。

PyInstallerのインストールは

pip install pyinstaller

pip3 install pyinstaller


エラーを回避するには

C:\Users\[ユーザー名]\AppData\Local\Programs\Python\Python36\Lib\site-packages\PyInstaller\hooks


virtualenvの仮想環境を使用している場合は

[プロジェクト名]\Lib\site-packages\PyInstaller\hooks

でhook-pandas.pyがないので作成。中身は

hiddenimports = ['pandas._libs.tslibs.timedeltas', 'pandas._libs.tslibs.np_datetime', 'pandas._libs.tslibs.nattype', 'pandas._libs.skiplist']

それで

pyinstaller [Pythonファイル名] --onefile 

と実行するとエラーが発生しないexeができるはず。

注意:今ところPython3.7だとできないので3.6以前のバージョンで実行してください。

参考URL
github.com

【ラノゲツクールmv】メッセーボックスのタイトルに戻る処理を変える方法【ちょいネタ】

夏バテしてます。
デフォルトのスクリプトだとゲーム中にメッセージボックスのタイトルボタンを押すとLayout_Titileで書かれているタイトルメニューになってしまい、
シーンでタイトル画面を作った人にしてみては、全然違うタイトル画面になってしまい。バグになってしまいます。
ということで今回は指定したシーンに行く方法をメモ。

まずシーンプロパティでUIDを控えておく。
f:id:test_okome:20180713215709j:plain

その後、スクリプトのTemplate -> Template_MessageboxMenuで、

f:id:test_okome:20180713220132j:plain

"acceptActions": [{"name":"exitGame"},{"name": "switchLayout", "params": { "name": "titleLayout" } }] , 

 "acceptActions": [{"name":"exitGame"},{"name": "switchGameScene", "params": { "uid": "さっき控えたUID" } }] , 

にすればそのシーンに飛ぶ。
画像のUIDはイントロシーンにしました。
参考サイト
forum.tkool.jp

【ラノゲツクールmv】ESCキーを押すとゲームが終了する機能をOFFにする方法【ちょいネタ】

PCゲームだとESCキーを押すとゲームが終了するのは結構定番だったりするけど、
間違って押してセーブしてなくて後悔という状況にさせるのは嫌なので、
その機能自体を無効しておくようにする方法。メモ。

スクリプトで Componenents -> Scene -> Component_GameSceneBehavior
f:id:test_okome:20180707202224p:plain

そのファイルで

    updateQuitShortcut: ->
        # if Input.trigger(Input.KEY_ESCAPE)
        # gs.Application.exit()                     

最後の二行を#でコメントアウトすると無効にできる。
別のキーに設定したい場合はInput.KEY_ESCAPEを変更すればいけると思う。

【ラノゲツクールmv】ゲームを終了するスクリプト【ちょいネタ】

ゲームを終了するコマンドが見当たらないのでスクリプト内を見ていろいろ実行をして試してみたら
以下のコードを実行すればゲームを終了できることがわかったので一行だけだけどメモ

まずコマンド一覧でスクリプトをべた書きしてスクリプトを実行するコマンドがあるのでそれを選択して
f:id:test_okome:20180706234959p:plain

実行したいところに
f:id:test_okome:20180706234140p:plain

Application.exit()

と書くと終了できる
ラノゲツクールmvにはスクリプト編集ができるので
そこのManagers -> GameManagerに書いてあった
スクリプトには検索機能があるので「quit」で検索してひたすらコードを追ってました

【React Native】nodeライブラリをインストールして使用

ネットで公開しているnodeライブラリを取り込めるみたいなのでそこらへんの話
使わせてもらったのはQRコード系のライブラリ

GitHub - cssivision/react-native-qrcode: a minimalist qrcode component for react-native

$ npm install react-native-qrcode --save
$ react-native link react-native-qrcode

シミュレータやターミナル起動しながらインストールしてビルドしてエラーになってて
あれー?おかしいなぁってずっと考えてました
ちゃんと両方落としてからインストールしてビルドしないとエラー出て先に進めない様です
当たり前だけどね

コードは上記のとこで公開してるのでそれにちょっと自分でアレンジしたくらい
なので実行結果の画像だけ公開

f:id:test_okome:20180625000705p:plain

【React Native】【Android】ビルドまでやったこと【memo】

ブログを引っ越すかプチ検討中だったり…
そのうち決めます

今回はjavascriptスマホアプリ作れると知ってとりあえずビルドまで躓いたandroidプロジェクトの設定で編集した箇所をメモ

f:id:test_okome:20180624010403p:plain

facebook.github.io

環境によっては上記の公式サイトのやり方ですんなりビルド成功するかも

iOSはすんなりだったけど、AndroidはMy iMac環境だといろいろ整えるのに時間がかかった

それぞれ以下のように編集した

$ react-native init {作成したいプロジェクト名}

/android/gradle/wrapper/gradle-wrapper.properties

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

/android/local.properties

sdk.dir=/Users/takahashi/Library/Android/sdk

/android/build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath 'com.google.gms:google-services:3.2.1'
    }
}

allprojects {
    repositories {
        mavenLocal()
        google()
        jcenter()
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
$ cd {作成したプロジェクト名}
$ react-native run-android

javaのバージョンは9

ちなみにWindows(iOSは非対応)はinitしてadbとかandroid studioとかの設定しただけでビルド通った

f:id:test_okome:20180624124600j:plain

参考サイト
Android Plugin for Gradle release notes  |  Android Developers

【ESP32】【Arduino】PCブラウザでESP32基板に付いてるMicroSDスロットに刺さっているカードの中身を見るプログラム

今回もなかなかアイデアが浮かばないのであまり使えないものを作った。
無線LANで繋がっているESP32と同じLAN内のPCのブラウザでのESP32のMicroSDをのぞき見する誰得プログラムを作った。
しかも直下のみ‥


gistd82808a9e88cb20f1c051aa9d34b6f5f

シリアルモニタを起動しておいてESP32のリセットボタンを押すとアクセスできるIPアドレスが表示される。
ブラウザで開いてreloadをクリックするとこんなふうにフォルダやらファイルやらのリストの情報が表示される。

f:id:test_okome:20180617235301p:plain

使えそうなサンプルコードとスケッチの例を組み合わせて一時間くらい格闘して作りました。
なので雑です。コードが

参考サイト
github.com