1

Fabric を Python プロジェクトの簡単な展開ツールとして使い始めていますが、いくつかのパッケージのシンボリック リンクを正しくセットアップするために、システムの Python ライブラリ パスがどこにあるかを知る必要があるタスクがあります。

問題は、fabfile でシステムの Python パスを取得するにはどうすればよいかということです。たとえば、次の Python コードは正しいライブラリ パスを返します。

# Without virtualenv activated
>>> from distutils.sysconfig import get_python_lib;
>>> print get_python_lib()
'/usr/lib/python2.7/dist-packages'

# With virtualenv activated
>>> from distutils.sysconfig import get_python_lib;
>>> print get_python_lib()
'/home/mandx/dev/my_project/env/lib/python2.7/site-packages'

私の場合、Fabric で (および virtualenv をアクティブにして) タスクを実行するときは、両方を知る必要があります。

この必要性について説明します。WeasyPrintを使用して、HTML および CSS コンテンツをコンストラクターに渡し、render メソッドを呼び出すだけで PDF を生成したいと考えています。CSS の知識を持つデザイナーが PDF レイアウトを利用できるようになり、WeasyPrint は CSS3 との互換性を追求しているため、この柔軟性は優れています。

また、トレードオフは、Pip でインストールできない一部のライブラリ (具体的には、Pango、GdkPixbuf、および Cairo) に依存することです。したがって、私が今持っている解決策は、それらをシステム全体にインストールし、それらをプロジェクトの virtualenv にシンボリックリンクすることです。

virtualenv のオプションを使用するという考えはあまり好きではありませんが、シンボリック リンクの--system-site-packages考えよりも優れている理由を聞きたいと思います。

4

1 に答える 1

1

ファブリック シェル スクリプト コマンド タスクを実行して、OS の python に問い合わせます。

/usr/bin/python -c 'from distutils.sysconfig import get_python_lib;print get_python_lib()'
于 2013-02-27T16:03:29.297 に答える