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

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

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

make は、ビルド作業を自動化するツールです。さまざまなファイルの最終変更時刻を比較し、従属するファイルよりも「ターゲット」のファイルが古いことがわかったときユーザーが設定していた命令を実行する事が可能です。

makefile

make は、プログラムのビルド作業を自動化するツールです。コンパイル、リンク、インストール等のルールを記述したテキストファイルをmakefileと呼び、このルールに従ってmakeが自動的にビルドを実行する。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

1回答

4872閲覧

Python3でMakefileを書きたい

CabbageLettuce

総合スコア57

make

make は、ビルド作業を自動化するツールです。さまざまなファイルの最終変更時刻を比較し、従属するファイルよりも「ターゲット」のファイルが古いことがわかったときユーザーが設定していた命令を実行する事が可能です。

makefile

make は、プログラムのビルド作業を自動化するツールです。コンパイル、リンク、インストール等のルールを記述したテキストファイルをmakefileと呼び、このルールに従ってmakeが自動的にビルドを実行する。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2019/03/30 12:07

編集2019/04/01 00:29

Python3でMakefile

Pythonのpip形式のパッケージがあるとして、
Makefileには何を書けばいいですか?

実現したいこと

下にあるディレクトリに行って、

make sudo make install

をしたら、

  • 実行可能な形式になっている
    app/init.pyが実行可能なファイルになっている(例えば、「./app」で実行できる)
  • パスの通った場所に配置されている
    パスの通った場所にmakeでビルドした実行可能なファイルが配置されている

という状態にしたいです。
環境は、

  • Ubuntu 18.04.02 LTS
  • Python 3.6.7

です

ファイル構成

.
├── app/
│ ├── _init_.py
│ └── subfile.py
├── Makefile <== これをどう書けば良いのでしょうか?
├── LICENSE
└── setup.py

一応、Webスクレイピング系のアプリを想定してます

該当のソースコード

setup.py

Python3

1license = open("./LICENSE").read() 2setup( 3 name='hoge_hoge', 4 version='0.0.0', 5 description='パッケージ', 6 author='MY NAME', 7 author_email='me@domain.com', 8 install_requires=['bs4', 'requests'], 9 dependency_links=['git+ssh://git@github.com/username/repo.git'], 10 license=license 11)

上記のsetup.pyも、素人が書いたものなので、なにか不備があるかもです
アプリ本体も、普通に書く時と書き方を変える必要がある場合は、ご指摘ください。

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

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

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

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

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

y_waiwai

2019/03/30 12:19 編集

makefileでなにをしたいんでしょうか ・なにが、実行可能の状態? ・なにを配置するんでしょう
CabbageLettuce

2019/03/30 12:44

すいません、情報が不足していました >なにが、実行可能の状態? app/init.pyが実行可能なファイルになっている(例えば、「./app」で実行できる) >なにを配置するんでしょう パスの通った場所に上の実行可能なファイルが配置されている、ということです 質問を修正しておきます。
KojiDoi

2019/03/30 13:05

まずはそのやりたいことを実現するシェルスクリプトを書いてみましょう。
CabbageLettuce

2019/03/30 13:07

Pythonの.pyファイルを実行可能な形式にするには何のコマンドを実行する必要がありますか?
ikedas

2019/03/30 13:57

ちょっとわからないんですが、「pip形式」のパッケージにMakefileが入っていなくてもbuild、installはできますよね。setup.pyだけでなくMakefileも作ろうと思った背景 (そのようにする、とどこかで読んだとか) を質問に具体的に書いてもらえるとありがたいです。
CabbageLettuce

2019/03/30 15:02

pip形式だと、Pythonがインストールされていないと実行できないので 配布可能な形にしたいです
ikedas

2019/03/30 15:31

なるほど。ただそうすると、そのMakefileを使ってビルドしたバイナリを配布する話になるんで、ほかのsetup.pyなんかをどう書くかはあまり関係ないですね。 とにかく、背景はある程度わかりました。
Stan_Dma

2019/03/30 22:57

You might distribute your pip thing as a source tarball by executing "python setup.py sdist" if you must have python-packaging way. But python script file like init.py would not be executed on the environment which doesnt have Python installed because the file is usually written in Python. Other executables will be good to work.
ikedas

2019/03/31 05:16

Stan_Dmaさんのおっしゃる通りで、配布先のマシンでパッケージをbuildするときは結局Pythonが必要になっちゃいますね。 pipパッケージを配布するのではなく、自分のマシンでbuildを行い、できあがったバイナリを配布することを考えているのなら、一般的には自分のマシンと配布先のマシンが同じOS (種類だけでなく、場合によってはバージョンやアーキテクチャなども) でないといけません。そういう想定でもいいのでしょうか?
CabbageLettuce

2019/04/01 00:01

Python3のtkinterを使ったGUIプログラムでpyinstallerを試したところ、生成された.exeファイルの起動にとても時間がかかり(一応動きました)、.exeファイル自体のサイズも大きくなってしまいました 出来れば、 ・素早く起動する ・.exeファイルのサイズが小さい という感じでビルドしたいです
Stan_Dma

2019/04/01 00:27

Where does it go, your want-to-build-makefile?
guest

回答1

0

ベストアンサー

Stackoverflowの次の質問と回答が参考になりそうです。

いくつかの方法があるようです。バイナリの作成手順は方法によりさまざまで、かならずしもsetuptoolsに基づいたパッケージを用意しなければならないわけではありません。また確立した作成手順を繰り返し実行可能にするためにmakeなどを用いることもできるでしょうけれども、その場合にもMakefileになにを書けばよいかは方法により異なるでしょう。それぞれの方法を試してみてなにか疑問や課題がでてきたら、別途質問してください。

投稿2019/04/01 03:01

ikedas

総合スコア4315

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問