差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
programming:python:packages:pyproj:with_pyinstaller [2020/03/23] – [環境変数 PROJ_LIBの指定] ikatakos | programming:python:packages:pyproj:with_pyinstaller [2020/03/25] (現在) – [環境変数 PROJ_LIBの指定] ikatakos | ||
---|---|---|---|
行 7: | 行 7: | ||
* [[https:// | * [[https:// | ||
- | pyprojは、EPSGコードなどを使って測地系を指定できるが、それはPROJ4モジュールのバックデータに依存している。 | + | pyprojは、EPSGコードなどを使って測地系を指定できるが、それは裏にあるPROJ4モジュールのデータに依存している。 |
その場所が特定できないということらしい。 | その場所が特定できないということらしい。 | ||
行 17: | 行 17: | ||
===== datadirモジュールの指定 ===== | ===== datadirモジュールの指定 ===== | ||
- | バックデータの場所を特定するにはpyproj.datadirモジュールを裏で読むのだが、これが明示的にはimportされていない(?)ため、pyinstallerが捕捉できない。 | + | PROJ4データがどこにあるかについて特定するため、pyprojはpyproj.datadirモジュールを裏で読む。 |
+ | しかし、pyinstallerはこれが捕捉できないらしい。 | ||
+ | (明示的にはimportされていないため?) | ||
これを捕捉されるようにするには、主に2通りあって、 | これを捕捉されるようにするには、主に2通りあって、 | ||
行 27: | 行 29: | ||
これで、pyinstallerがdatadirを見れるようになる。 | これで、pyinstallerがdatadirを見れるようになる。 | ||
- | これだけで、「従来Pythonが動いていた環境なら」exeも動く。 | + | これだけで、「従来Pythonが動いていた環境なら」exeも動くはず。 |
===== 環境変数 PROJ_LIBの指定 ===== | ===== 環境変数 PROJ_LIBの指定 ===== | ||
- | 別環境に持っていくには、もう1つ作業が必要となる。 | + | Pythonが入っていないような別環境に持っていくには、もう1つ作業が必要となる。 |
- | pyproj.datadirは以下のようなコードなのだが、要はこれ自体が" | + | pyproj.datadirは以下のようなコードなのだが、要はこれ自体が" |
* [[https:// | * [[https:// | ||
- | pythonも何もインストールしていない環境では、だいたい全て見つからないでエラーとなる。 | + | pythonも何もインストールしていない環境では、だいたい見つからないでエラーとなる。 |
< | < | ||
行 47: | 行 49: | ||
候補の1つに環境変数「PROJ_LIB」を参照しようとしている箇所があるので、これを使えばいけそう。 | 候補の1つに環境変数「PROJ_LIB」を参照しようとしている箇所があるので、これを使えばいけそう。 | ||
- | 1ファイルにならないのが何とも残念だが、(そしてpyinstallerの設定によって1ファイルに収めることが可能なのかも知れないが) | + | 1ファイルにならないのが何とも残念だが、(やり方次第で1ファイルに収めることが可能なのかも知れないが) |
ひとまず、 | ひとまず、 | ||
行 54: | 行 56: | ||
とすれば、動くようにはなる。 | とすれば、動くようにはなる。 | ||
+ | |||
+ | datadirの実データは、例えばAnaconda環境であれば、pyprojをインストールした環境(「myenv」とする)でactivateした上で、環境変数を確認すると" | ||
+ | そのパスの場所を見ればよい。 | ||
+ | |||
+ | > activate myenv | ||
+ | (myenv)> set | ||
+ | |||
+ | Pythonコード内で環境変数を設定するには以下のようにする。 | ||
<sxh python> | <sxh python> |