4

FTP アクセスしかできないサーバーで Django Web サイトをホストしています。サーバーには 64 ビット アーキテクチャがあり、私のコンピューターには 32 ビット アーキテクチャがあります。MySQL-python などの一部のモジュールでは、アーキテクチャが重要です。

requirements.txtサーバーに適した私のパーソナルコンピューターからサイトパッケージディレクトリを構築する方法はありますか? 何らかの方法で pip のアーキテクチャを偽造する必要があると思います。

はい。いくつかの 64 ビット マシンにアクセスできます。しかし、優れたワークフローのためには、すべてを自分のパソコンに入れておく方がよいでしょう。

4

2 に答える 2

4

あなたが求めていることは、あなたが思っているよりずっと難しいものです。

MySQLdb を含む多くのライブラリには、ターゲット システム用にコンパイルする必要がある C 拡張コードが含まれています。システムで実行するようにコンパイルしても、ターゲット システムでは動作しません。つまり、クロスコンパイラが必要です。

また、システム上のライブラリではなく、ターゲット システムに存在する Python ライブラリにリンクする必要もあります。また、ほとんどの場合、それらのライブラリに付属するヘッダーと構成ファイルが必要になります。

このようなライブラリのほとんどには、他の依存関係があります。この場合、ほぼ確実に、システム上のものではなく、ターゲット システムの libmysql が必要になります。もちろん、それに付随するヘッダーと構成ファイルも必要です。

また、 を使用する場合pipは、ビルドする適切なツールチェーン、ライブラリなどを選択する distutils/setuptools 構成が必要になります。

これをすべて行うと、別のシステムの Python 用のサイト パッケージをビルドできます。

「Python モジュールのクロス コンパイル」を Google で検索すると、このようなことをしたことがない場合に役立つ、このようなブログが見つかります。もちろん、簡単ではないことを説明するブログ投稿ではよくあることですが、それらはすぐに古くなってしまいます (私が見た最初の 3 つはすべて、 をインストールdistributeして置き換えることから始まりsetuptoolsますが、これは間違いなくもうやりたくないことです)。そのため、盲目的に従うだけでなく、彼らが何をしているのかを本当に理解し、自分でプロセスをデバッグできる必要があります。


自分でそれをしたくない、またはできない場合は、やりたいことができません。しかし、とにかくもっと簡単な解決策があります。

サーバー用の開発システムをセットアップするだけです。64 ビット ハードウェアで実行している場合は、デュアル ブートするか、virtualboxまたは VMware などの仮想化ツールを使用して、32 ビット Linux 上で 64 ビット Linux を実行できます。ターゲットサーバーにある同じディストリビューションと同じパッケージ、および付随する-dev/ -devel/whatever パッケージをインストールし、そこでビルドします。

ハードウェアが実際に 32 ビットである場合、またはターゲットがたとえば Linux ではなく OS X である場合、またはターゲット環境がセットアップのために非常に多くのディスク領域を占有してラップトップに収まらない場合、これは明らかにそう簡単にはなりません。しかし、どれも真実ではないので、簡単です。

于 2013-12-18T21:04:30.970 に答える