私はpipを使用して、unixodbc-dev、unixodbc-bin、unixodbcのような非Pythonライブラリにいくつかの依存関係があるpyodbcと呼ばれるpythonモジュールをインストールしようとしています。これらの依存関係をシステム全体にインストールすることはできません現時点では、私はプレイしているだけなので、標準以外の場所にインストールしました。これらの依存関係を探す場所をpipに伝えるにはどうすればいいですか?より正確には、include dirs(gcc -I )およびpyodbc拡張機能をビルドするときに使用するライブラリdirs(gcc -L -l)
pipには--global-option
フラグがあります
これを使用して、build_ext
に追加のフラグを渡すことができます。
たとえば、-library-dirs(-L)フラグを追加するには:pip install --global-option=build_ext --global-option="-L/path/to/local" pyodbc
gccは環境変数もサポートしています: http://gcc.gnu.org/onlinedocs/gcc/Environment-Variables.html
Build_extのドキュメントが見つからなかったため、ここにコマンドラインヘルプがあります
Options for 'build_ext' command:
--build-lib (-b) directory for compiled extension modules
--build-temp (-t) directory for temporary files (build by-products)
--plat-name (-p) platform name to cross-compile for, if supported
(default: linux-x86_64)
--inplace (-i) ignore build-lib and put compiled extensions into the
source directory alongside your pure Python modules
--include-dirs (-I) list of directories to search for header files
(separated by ':')
--define (-D) C preprocessor macros to define
--undef (-U) C preprocessor macros to undefine
--libraries (-l) external C libraries to link with
--library-dirs (-L) directories to search for external C libraries
(separated by ':')
--rpath (-R) directories to search for shared C libraries at runtime
--link-objects (-O) extra explicit link objects to include in the link
--debug (-g) compile/link with debugging information
--force (-f) forcibly build everything (ignore file timestamps)
--compiler (-c) specify the compiler type
--swig-cpp make SWIG create C++ files (default is C)
--swig-opts list of SWIG command line options
--swig path to the SWIG executable
--user add user include, library and rpath
--help-compiler list available compilers
Thorfinの答えを基に、目的のインクルードとライブラリの場所が/ usr/localにあると仮定して、両方を次のように渡すことができます。
Sudo pip install --global-option=build_ext --global-option="-I/usr/local/include/" --global-option="-L/usr/local/lib" <you package name>
参考までに... pipを使用したパッケージのインストールに問題がある場合は、
--no-clean
オプションを使用して、正確に何が起こっているかを確認します(つまり、ビルドが機能しなかった理由)。たとえば、numpyが適切にインストールされていない場合は、試すことができます
pip install --no-clean numpy
次に、Temporaryフォルダーを見て、ビルドがどこまで到達したかを確認します。 Windowsマシンでは、次のような場所に配置する必要があります。
C:\Users\Bob\AppData\Local\Temp\pip_build_Bob\numpy
明確にするために、-no-cleanオプションはパッケージをインストールしようとしますが、それ以降はクリーンアップせず、pipが何をしようとしているかを確認できます。
それ以外の場合、ソースコードをダウンロードするだけなら、-d
国旗。たとえば、Numpyソースコードをダウンロードするには.tar
ファイルを現在のディレクトリに移動し、次を使用します。
pip install -d %cd% numpy
インクルードファイルとライブラリの場所を示す別の方法は、pipを実行する前に関連する環境変数を設定します。
export LDFLAGS=-L/usr/local/opt/openssl/lib
export CPPFLAGS=-I/usr/local/opt/openssl/include
pip install cryptography
virtualenv を使用したことがありますか? Pythonパッケージを使用すると、1台のマシンで複数の隔離された環境を作成および維持できます。それぞれが、システムライブラリまたは別の仮想環境で依存関係を台無しにすることなく、互いに独立した異なるモジュールを使用できます。
ルート権限がない場合は、 ソースからvirtualenvパッケージをダウンロードして使用 :
$ curl -O https://pypi.python.org/packages/source/v/virtualenv/virtualenv-X.X.tar.gz
$ tar xvfz virtualenv-X.X.tar.gz
$ cd virtualenv-X.X
$ python virtualenv.py myVE
今週末、Ubuntu Server 12.0.4で上記の手順を実行したところ、完全に機能しました。作成する新しい各仮想環境にはデフォルトでPIPが付属しているため、新しい環境へのパッケージのインストールは簡単です。
また、Thorfinの回答にも助けられました。私はWindowsでGTK3 +をビルドしてpygobjectをインストールしていましたが、pip installで複数のフォルダーを含める方法に問題がありました。
私はpipドキュメントに従ってpip設定ファイルを作成しようとしました。しかし、失敗しました。動作するのはコマンドラインを使用することです:
--global-option = build_extの後に--global-option = "-IlistOfDirectories"および/または--global-option = "-LlistofDirectories"が続く
windowsの複数のフォルダーで機能する区切り記号は';'セミコロンであり、コロン ':'ではありません。他のOSでは異なる場合があります。
サンプル作業コマンドライン:
pip install --global-option=build_ext --global-option="-Ic:/gtk-build/gtk/x64/release/include;d:/gtk-build/gtk/x64/release/include/gobject-introspection-1.0" --global-option="-Lc:\gtk-build\gtk\x64\release\lib" pygobject==3.27.1
パスに「\」または「/」を使用できますが、「」の横にバックスラッシュを入力しないでください
二重引用符の隣にバックスラッシュがあるため、以下は失敗します
pip install --global-option=build_ext --global-option="-Ic:\willFail\" --global-option="-Lc:\willFail\" pygobject==3.27.1