3

Django プロジェクトのバージョン管理に Git を使用しています。

可能な限り、プロジェクト自体の一部ではないが、プロジェクトが依存しているすべてのソースコードは、Git サブモジュールとして取り込まれます。これらはlibディレクトリに存在し、python パスに含める必要があります。ディレクトリ/ファイルのレイアウトは次のようになります。

.git
docs
lib
my_project
    apps
    static
    templates
    __init__.py
    urls.py
    manage.py
    settings.py
    .gitmodules
README

Pythonパスにライブラリを含めるためのベストプラクティスは何だと思いますか?

私は virtualenv を使用しているので、ライブラリを virtualenv の site-packages ディレクトリに簡単にシンボリック リンクできます。ただし、これにより virtualenv がこの特定のプロジェクトに関連付けられます。私の理解では、virtualenv は私のファイルに依存すべきではありません。代わりに、私のファイルは virtualenv に依存する必要があります。

このプロジェクトの異なるローカル コピーに同じ virtualenv を使用することを考えていましたが、このようにするとその機能が失われます。これにアプローチするより良いアイデアはありますか?


アップデート:

最善の解決策は、すべての依存関係を pip に管理させることでした。

ただし、これは、pipがまだ相対パスを適切に処理できないため、git サブモジュールを使用できないことを意味します。したがって、外部依存関係は virtualenv (通常: my_env/src/a_python_module) に存在する必要があります。

プロジェクトツリーにいくつかの依存関係を持たせるために、サブモジュールを使用したいと思います。リポジトリの一部を変更するためにこれらのリポジトリをフォークする必要があり、将来的にはさらに変更する必要がある可能性が高いため、これは私にとってより理にかなっています。

4

1 に答える 1

3

を使用して、インストールしたすべてのパッケージを要件ファイルにダンプします (requirements.txt は標準的な名前に見えます)。

pip freeze > requirements.txt

新しい virtualenv が必要になるたびに、次のことを行うだけです。

virtualenv <name> --no-site-packages
pip install -r requirements.txt

install -r requirements.txt は、新しいパッケージに更新する場合にもうまく機能します

(何かが変更されるたびに pip freeze を実行することによって)requirements.txt をパッケージと同期させておくだけで、virtualenv の数に関係なく完了です。

注:パッケージで開発を行う必要がある場合は、-e(編集可能)パラメーターを使用してインストールできます。この方法でパッケージを編集でき、新しいものをテストするたびにアンインストール/インストールする必要はありません:)

于 2011-12-13T16:44:56.353 に答える