質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PyInstaller

PyInstallerは、Pythonのスクリプトを一括でWindowsなどで動く実行可能ファイルに変換できるツールです。このツールを用いることで自作のPythonプログラムを別で使用する場合でもPythonをインストールする必要がありません。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2323閲覧

py2exeで、階層の違う2つのスクリプトを1つのexeにしたい

tutankhamen

総合スコア9

PyInstaller

PyInstallerは、Pythonのスクリプトを一括でWindowsなどで動く実行可能ファイルに変換できるツールです。このツールを用いることで自作のPythonプログラムを別で使用する場合でもPythonをインストールする必要がありません。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/05/05 15:11

編集2020/09/08 00:42

前提・実現したいこと

py2exeで、階層の違う2つのスクリプトを1つのexeにしたいです。

・作成したスクリプトを普通に実行するときは問題ありません。
・py2exeでexe化もできているのですが、そのexeを実行するとエラーになります。

発生している問題・エラーメッセージ

Traceback (most recent call last): File "Main.py", line 1, in <module> ModuleNotFoundError: No module named 'Common'

該当のソースコード

Python

1#Main.py 2import Common.BootManager as bm #自作スクリプト 3 4bm.function() 5 6****************************************** 7 8#setup.py 9from distutils.core import setup 10import py2exe 11 12option = { 13 'compressed': 1, 14 'optimize': 2, 15 'bundle_files': 3, 16} 17 18setup( 19 options = { 20 'py2exe': option, 21 }, 22 windows = [ 23 {'script': 'Main.py', "icon_resources": [(1,"setting\xxx.ico")]} 24 ], 25 zipfile = None, 26) 27

試したこと

ファイル構成は
root\Main.py
root\Common\BootManager.py
です。

BootManager.pyを1階層上のMain.pyと同じ階層に置き
「import Common.BootManager as bm」から
「import BootManager as bm」にしてexe化すると問題ありません。

補足情報(FW/ツールのバージョンなど)

・Windows 10
・Python 3.7(32bit)
・py2exe 0.9.3.2

32bitを使用している理由は、PyInstallerの32bitだとノートンにウィルスとして誤検知されてしまうためです。(それがなければ、PyInstallerで実現したいところです)
https://sapporo-president.com/archives/13968

以上、お手数おかけしますがよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己回答です。

スクリプトとして動作するときは、(そこにファイルがあるので)相対パスでも動作しますが、
「py2exeでexe化した内部では、元々の相対パスを管理していない状態で固めたので動作しない」というように解釈しました。

投稿2020/09/08 00:52

tutankhamen

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問