web-dev-qa-db-ja.com

Python pipはpyodbcを見つけることができません

Virtualenvを使用して、pyodbcをインストールしようとしています。私が見つけることができるすべてのリソースは、これは非常に簡単であると主張しています。 MySQLなどのすべての基本的なインストールが完了したら、次を実行します。

pip install pyodbc

ただし、非常に奇妙なエラーが表示されます。欠落しているライブラリとは何の関係もありません(私が知る限り)。この種のエラーを長期間グーグルで調べた後、構築的なものはまったく見つかりません。

(local-dev)espears@espears-w ~ $ pip install pyodbc
Downloading/unpacking pyodbc
  Could not find any downloads that satisfy the requirement pyodbc
  Some externally hosted files were ignored (use --allow-external pyodbc to allow).
Cleaning up...
No distributions at all found for pyodbc
Storing debug log for failure in /home/espears/.pip/pip.log

そこで、「allow-external」オプションを試してみましたが、役に立ちません。

(local-dev)espears@espears-w ~ $ pip install --allow-external pyodbc
You must give at least one requirement to install (see "pip help install")

しかし、ヘルプドキュメントでは、このオプションを正しく使用しているように見えます。実行中のpip help installの出力から:

Package Index Options:

...

  --allow-external <package>  Allow the installation of externally hosted files

PIPログファイルの結果は次のとおりです。

(local-dev)espears@espears-w ~ $ cat /home/espears/.pip/pip.log
Downloading/unpacking pyodbc
  Getting page https://pypi.python.org/simple/pyodbc/
  URLs to search for versions for pyodbc:
  * https://pypi.python.org/simple/pyodbc/
  Analyzing links from page https://pypi.python.org/simple/pyodbc/
    Skipping link http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/); not a file
    Skipping link http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/); not a file
  Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
  Could not find any downloads that satisfy the requirement pyodbc
  Some externally hosted files were ignored (use --allow-external pyodbc to allow).
Cleaning up...
  Removing temporary dir /home/espears/.virtualenvs/local-dev/build...
No distributions at all found for pyodbc
Exception information:
Traceback (most recent call last):
  File "/home/espears/.virtualenvs/local-dev/local/lib/python2.7/site-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/home/espears/.virtualenvs/local-dev/local/lib/python2.7/site-packages/pip/commands/install.py", line 270, in run
    requirement_set.prepare_files(Finder, force_root_Egg_info=self.bundle, bundle=self.bundle)
  File "/home/espears/.virtualenvs/local-dev/local/lib/python2.7/site-packages/pip/req.py", line 1157, in prepare_files
    url = Finder.find_requirement(req_to_install, upgrade=self.upgrade)
  File "/home/espears/.virtualenvs/local-dev/local/lib/python2.7/site-packages/pip/index.py", line 285, in find_requirement
    raise DistributionNotFound('No distributions at all found for %s' % req)
DistributionNotFound: No distributions at all found for pyodbc

--allow-externalオプションを取得するだけで動作する場合、pyodbcを取得するための共通の場所が明確に見えるため、動作するように見えます。

しかし、pyodbcのインストールに関する実質的にすべての参照が外部リンクを有効にするために邪魔にならなくてもよいのに、なぜこれが必要なのか困惑しています。また、今日は1日多くのパッケージをインストールしていますが、問題はほとんどなく、他の場合にこのallow-externalの必要性に遭遇することはありません。

Ubuntu 12.04では、Python 2.7.3でpipバージョン1.5を使用しています。

29
ely

PyPIディレクトリ構造が正しい場合、pip install --allow-external pyodbc --allow-unverified pyodbc pyodbcを実行できます。

この回答を最初に投稿したときのpip.log出力に基づいて、パッケージのWebサイトのディレクトリ構造が壊れていたと思います。 pip install https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/pyodbc/pyodbc-3.0.7.ZipのようなパッケージのURLを指定することにより、このタイプの問題をいつでも回避できます。異なるバージョンのリンクは here で説明されています。

44
sholsapp

Pyodbcもインストールしてみて、同じ壁にぶつかりました。あなたと私が共にぶつかった問題は、--allow-externalが次の引数も消費することです。したがって、実際に書く必要があります:

Sudo pip install --allow-external pyodbc pyodbc

その後、未検証のソースに関する別のエラーが発生したため、実際に機能したコマンドは次のとおりです。

Sudo pip install --allow-external pyodbc --allow-unverified pyodbc pyodbc

これが完了すると、インストールされたファイルの権限により、通常のユーザーはpyodbcにアクセスできなくなります。そこで、インストールされたすべてのパッケージのアクセス許可を手動で調整しました(pyodbcに必要なファイルだけを見つけるよりも簡単だと思われました)。

cd /usr/local/lib/python2.7/
chmod -R o=g dist-packages

EMSの提案に従って、私はPipバグ追跡システムに問題を追加しました。

https://github.com/pypa/pip/issues/189

10
Bowie Owens

FWIW、ms windowsでは、私のためのバイナリのインストール(windows install)以外は、windows/cygwinハイブリッド環境では面倒でした。

pypyodbc を使用することを選択しました。これは純粋なpythonであり、Windows/Linuxの開発に変更を必要としませんでした。 ほぼpyodbcのドロップイン置換 コンパイルは不要で、もちろんpip install pypyodbcで簡単にインストールできます。

5
joefromct

easy_installを使用して、virualenvのウィンドウにpyodbcをインストールする「簡単な」方法があります。

  • windows用の最新のpyodbcインストーラーをダウンロードする
  • virtualenvをアクティブにします
  • easy_install pyodbc-3.0.7.win32-py2.7.exe

pywin32の場合と同じように、 ホスト環境のsite-packagesフォルダーを含めずにvirtualenvでpywin32を使用するにはどうすればよいですか?

4
jvh

インストール時に成功しました

Sudo pip install --allow-external pyodbc --allow-unverified pyodbc pyodbc

ただし、pyodbcを実際にコンパイルするにはunixodbc-devパッケージも必要でした。

3
Carl Ekerot

--allow-unverified--allow-externalは両方とも、パッケージ名を引数として取ります。

From pip help install:
--allow-external <package>   Allow the installation of a package even if it
                             is externally hosted
--allow-unverified <package> Allow the installation of a package even if it 
                             is hosted in an insecure and unverifiable way
  • --allow-externalには引数(許可する外部の名前)が必要です。
  • --allow-unverifiedについても同様です。
  • pip install --allow-external pyodbcを使用すると、pyodbcと呼ばれる外部を許可します
  • pip install --allow-external pyodbc pydodbcは必要なもので、最初のpyodbcは外部を許可し、2番目は実際にpipにインストールするパッケージを指示します。

    Pip help installから:--allow-external外部でホストされている場合でもパッケージのインストールを許可する--allow-unverified安全で検証不可能な方法でホストされている場合でもパッケージのインストールを許可する

だからあなたの使用法は

pip install <pkg> --allow-unverified <pkg> --allow-external <pkg>

または少しわかりにくい:

pip install --allow-unverified <pkg> --allow-external <pkg> <pkg>

DO NOT許可するだけで許可しない場合は--allow-all-externalを使用します[〜#〜] all [〜#〜]。これは、セキュリティチェックを行うという目的全体を無効にします。

0
Kashyap