9

これはおそらく非常に簡単で率直な答えがある質問ですが、プログラミングの経験が数年あるにもかかわらず、何らかの理由で、「ビルド」してから「インストール」することの正確な概念をまだよく理解していません。 "。私はそれらの使い方を知っていて、たくさん使ってきましたが、バックグラウンドで行われている正確なプロセスについてはわかりません...

私はウェブやウィキペディアなどを見てきました...しかし、それに対する簡単な答えは1つもありません。ここでも見つけることができません.

私が理解しようとした良い例は、python に新しいモジュールを追加することです: http://docs.python.org/2/install/index.html#how-installation-works

「ビルドコマンドは、インストールするファイルをビルドディレクトリに配置する責任があります」と書かれています

次に、インストール コマンドの場合: 「ビルド コマンドの実行後 (明示的に実行するか、インストール コマンドで実行するかに関係なく)、インストール コマンドの作業は比較的単純です。必要なのは、ビルドの下にあるすべてのものをコピーすることだけです。 /lib (または build/lib.plat) を選択したインストール ディレクトリにコピーします。"

基本的にこれが言っていることは次のとおりです。 1. すべてをビルド ディレクトリにコピーしてから... 2. すべてをインストール ディレクトリにコピーします。

説明のどこかにプロセスが抜けているに違いない...コンプリケーション?

あまりにも技術的ではなく、できるだけ詳細な簡単な回答をいただければ幸いです:)

うまくいけば、これに対する詳細な答えを知らないのは私だけではありません...

ありがとう!

アイボリック

4

3 に答える 3

10

buildビルドとは、ソース コードディレクトリ内のサブディレクトリなど、何か問題が発生してもシステムに影響を与えないサンドボックスの場所で、ソース コードをバイナリにコンパイルすることを意味します。

インストールとは、ビルドされたバイナリをbuildサブディレクトリからシステム パス内の場所にコピーして、簡単にアクセスできるようにすることを意味します。これがストレート コピー コマンドで行われることはめったになく、多くの場合、作成されたファイルを追跡して後で簡単にアンインストールできるパッケージ マネージャーによって行われます。

通常、ビルド コマンドは必要なすべてのコンパイルとリンクを行いますが、Python はインタープリター言語であるため、ライブラリに純粋な Python ファイルしかない場合、ビルドにコンパイル手順はありません。実際、すべてがビルド ディレクトリにコピーされ、最終的な場所に再度コピーされます。ライブラリが、コンパイルする必要がある他の言語で書かれたコードに依存している場合にのみ、コンパイルのステップがあります。

于 2013-11-10T20:51:55.657 に答える
8

あなたは自分の居間に新しい椅子が欲しくて、それを自分で作りたいと思っています。カタログを閲覧し、パーツの山を注文します。彼らがあなたのドアに到着したとき、あなたはすぐにそれらを使用することはできません. ワークショップで椅子を作成する必要があります。少し肘にグリースを塗った後、座ることができます。その後、リビングルームの座りやすい場所に椅子を設置します。

椅子はあなたが使いたいプログラムです。ソースコードとしてあなたの家に届きます。それを実行可能なプログラムにコンパイルすることによってビルドします。使いやすくするためにインストールします。

于 2013-11-12T05:00:11.340 に答える
2

あなたが参照しているビルドとインストールのコマンドは setup.py ファイルからのものですよね?

Setup.py ( http://docs.python.org/2/distutils/setupscript.html )

このファイルは、サードパーティのアプリケーション/Python の拡張機能によって作成されます。それらは以下の一部ではありません:

  1. Python ソース コード (多数の c ファイルなど)
  2. Python にバンドルされている Python ライブラリ

開発者が世界と共有したい python 用のライブラリを作成するとき、彼は setup.py ファイルを作成して、ライブラリを python がインストールされている任意のコンピューターにインストールできるようにします。多分これはMISSING STEPです

Setup.py sdist

これにより、python モジュール (tar.gz ファイル) が作成されます。これが行うことは、python ライブラリで使用されるすべてのファイルをフォルダーにコピーすることです。モジュールの setup.py ファイルを作成し、すべてをアーカイブして、ライブラリを別の場所に構築できるようにします。

Setup.py ビルド

これにより、python モジュールがライブラリにビルドされます (特にこの OS の場合)。

ご存知かもしれませんが、Python ライブラリが最初に作成されたコンピュータは、インストールするライブラリとは異なります。

  1. Python のバージョンが異なる可能性があります。
  2. オペレーティングシステムが異なる可能性があります
  3. プロセッサ/マザーボードなどが異なる可能性があります

上記のすべての理由により、コードは別のコンピューターでは機能しません。そのsetup.py sdistため、別のコンピューターでライブラリを再構築するために必要なソース ファイルのみを含むモジュールを作成します。

setup.py が行うことは、makefile が行うこととまったく同じです。ソースをコンパイルし、ライブラリを作成します。

これで、必要なすべてのファイルのコピーがライブラリにあり、コンピューター/オペレーティング システムで動作します。

Setup.py インストール

必要なファイルがすべて揃っています。しかし、それらは機能しません。なんで?Python に追加する必要があるのはそのためです。ここで install の出番です。これでライブラリのローカル コピーができたので、それを Python にインストールする必要があるので、次のように使用できます。

import mycustomlibrary

これを行うには、次のようないくつかのことを行う必要があります。

  1. 私たちのバージョンの Python でファイルをライブラリ フォルダーにコピーします。
  2. importコマンドを使用してライブラリをインポートできることを確認する
  3. このライブラリの特別なインストール手順を実行します。(パスの設定など)

これは、タスクの最も複雑な部分です。私たちのライブラリが BeautifulSoup を使用するとどうなるでしょうか? これは Python ライブラリの一部ではありません。ライブラリと他のライブラリが互いに干渉することなく BeautifulSoup を使用できるようにインストールする必要があります。

また、Python が別の場所にインストールされている場合はどうなりますか? 多くのユーザーがいるサーバーにインストールした場合はどうなりますか?

インストールは、これらすべての問題を透過的に処理します。これは、作成したライブラリを実行できるようにすることです。あなたがしなければならないのは、importコマンドを使用することだけです。インストールは残りを処理します。

于 2013-11-17T12:20:23.827 に答える