2

新規フォルダを作成し、仮想環境を作成した後

$ virtualenv venv --distribute

そして2つのパッケージをインストール

$ pip install Flask gunicorn

次に、現在 pip でインストールされているすべてのパッケージをファイルに書き込みます

$ pip freeze > requirements.txt
$ cat requirements.txt
Flask==0.10.1
Jinja2==2.7
MarkupSafe==0.18
Werkzeug==0.9.1
distribute==0.6.34
gunicorn==17.5
itsdangerous==0.22
wsgiref==0.1.2

予想よりも長いパッケージのリストが表示されます。インストールの責任者は誰で、何に使用されますか? 問題のパッケージリスト:

wsgiref==0.1.2
itsdangerous==0.22
distribute==0.6.34
MarkupSafe==0.18

私は主にUbuntuボックスでpipを使用しましたが、同じコマンドの後にこれらのパッケージをインストールしていませんでした.Macでのみこの動作に気付きました.

4

3 に答える 3

4

wsgirefdistributeまだ何もしていない「空の」ものであっても、常にvirtualenvに存在しますpip install--no-site-packages で作成された新しい virtualenv で pip freeze がいくつかのパッケージを報告するのはなぜですか? 説明のために。これはPython 3.3 で修正されたバグです。

itsdangerous比較的最近のMarkupSafeもので、新しいFlaskリリースによって取り込まれた新しい依存関係です。

  • itsdangerous( docs ) がFlask直接必要です。バージョン 0.10 以降 -この依存関係を追加したgithub commitを参照してください。
  • MarkupSafe( docs ) は によって必要とされJinja2、 によって必要とされFlaskます。Jinja2この依存関係をバージョン 2.7 に追加しました - github commit を参照してください。

同じコマンドを実行した後、これらはUbuntuボックスにインストールされていないと言います。しかし、そこには と のどのバージョンがFlaskありJinja2ますか? それらが Mac のバージョンよりも古い場合は、これらの新しい依存関係が取り込まれなかった理由を説明している可能性があります。

于 2013-07-16T00:05:55.190 に答える
1

virtualenv はシステム全体にインストールされたパッケージを使用するため、pip は新しくインストールされたパッケージと一緒にそれらを認識します。

--no-site-packages環境を作成するときにオプションを追加してみてください。

または、環境にインストールされている pip インスタンスを明示的に実行してみてください ( path/to/your/env/bin/pip opts...)。これにより、システムのパッケージを無視するように pip に指示される可能性があります (それについてはまったくわかりません)。

于 2013-07-15T15:35:50.950 に答える
1

それらはFlask 依存関係のようです(またはフラスコの依存関係の依存関係)

pip install --no-install --verbose Flask

pypi が各プロジェクトの依存関係のリストを持っていることを望んでいましたが、それらが表示されませんでした...

于 2013-07-15T15:33:56.553 に答える