22

タスクの1つにquickfixエンジン(http://www.quickfixengine.org/)を構築し、Pythonサポートも組み込みました。

残念ながら、これはマルチユーザー環境であり、Pythonのインストールパスにアクセスできません。したがって、make installコマンドはファイルのコピーを試み、失敗します。私はそれを行おうとしている2行をコメントアウトし、makeinstallが完了しました。そこにファイルを置くことができないので、作成した.soファイルをどこに置くことができますか?

そして、Pythonにそれが存在することを知らせるにはどうすればよいですか?python.orgのドキュメントを見ましたが、 setup.pyのインストールプロセスについてのみ説明しています。

また、 .soの パスを入れてみましたがsys.path、うまくいきませんでした。そして、Pythonパッケージの構造に関するドキュメントはありますか?ありがとう。

4

3 に答える 3

19

QuickFixパッケージをコンパイルしてもファイルは生成されず、Pythonバインディングをコンパイルするだけで、適切な場所に配置することにsetup.py依存していると想定します。make install

この場合、手っ取り早い解決策は、QuickFixソースをコンパイルし、Python拡張モジュール(システム上でこれらの末尾に.so拡張子を付けたもの)を見つけて、そのディレクトリをPYTHONPATH環境変数に追加することです。

export PYTHONPATH=~/path/to/python/extensions:PYTHONPATH

またはシェル構成ファイルの同様の行。

より堅牢なソリューションには、を使用してコンパイルすることを確認することが含まれます./configure --prefix=$HOME/.local。QuickFixがPythonファイルを適切な場所に配置することを知っていると仮定するとsite-packages、そうするときにmake install、ファイルをにインストールする必要があります。Python2.6以降では、ユーザーごとのsite-packagesディレクトリ~/.local/lib/pythonX.Y/site-packagesとしてPythonパスにすでに存在しているはずです。

一方、setup.pyファイルが提供された場合は、単に実行します

python setup.py install --user

Python2.6以降の場合。

于 2011-02-08T15:27:02.157 に答える
3

ホームフォルダーのディレクトリにインストールし、そのディレクトリが含まれるように PYTHONPATH を操作する必要があります。

一番簡単なのは virtualenv を使うことです。しかし、それにはインストールが必要であり、キャッチ22が発生します。:)しかし、virtualenvがインストールされているかどうかを確認してください。インストールされている場合は、次のことができます。

$ cd /tmp
$ virtualenv foo
$ cd foo
$ ./bin/python

その後、/tmp/foo/python setup.py install を使用して、通常どおりインストールを実行できます。(明らかに、/tmp/foo ではなく、ホーム ディレクトリの a フォルダーに仮想環境を作成する必要があります。;))

virtualenv がない場合は、独自のローカル Python をインストールできます。でも、それも許されません。次に、パッケージのローカル ディレクトリにパッケージをインストールできます。

$ wget http://pypi.python.org/packages/source/s/six/six-1.0b1.tar.gz#md5=cbfcc64af1f27162a6a6b5510e262c9d
$ tar xvf six-1.0b1.tar.gz 
$ cd six-1.0b1/
$ pythonX.X setup.py   install --install-dir=/tmp/frotz

次に、PYTHONPATHに追加する必要があります。これ/tmp/frotz/pythonX.X/site-packagesで、稼働するはずです!

于 2011-02-08T15:41:08.340 に答える
2

Pythonモジュールのインストールに関する公式FAQは次のとおりです。http://docs.python.org/install/index.html

あなたを助けるかもしれないいくつかのヒントがあります。

于 2011-02-08T12:54:22.337 に答える