venv仮想環境をGit Cloneした環境下でも同じように使用できる方法がありますか？


# 環境

Windows10 Pro 64bit  
Python 3.7  
Git version 2.27.0.windows.1  
VSCode

# プロジェクト

venvで仮想環境をプロジェクトフォルダ内に作成しています。  
メイン開発環境では、python インタプリタ選択で、仮想環境内のpythonを選択されるようにしています。  
このようなプロジェクトをgitで管理しているのですが、リモート環境にgit
cloneを作成した場合、リモート環境下ではあらたに仮想環境を構築しなければなりません。

## 原因個所

venvで作成されたフォルダ内に、以下のファイルがあります。

[code]

    pyvenv.cfg
    activate
    activate.bat
    Activate.ps1
    
[/code]

これらに絶対パスが記述されていることが、まず問題だと考えています。

## 質問

  1. これらを相対パスの記述にするにはどうすればよいでしょうか？  
そもそも相対パス記述にすれば問題が解決するのでしょうか？

  2. pyvenv.cfgにはAppDataフォルダパスの記述であり、Clone環境下で同じような相対パス（ユーザーごとの）が保証されているわけではないことが問題でしょうか？
  3. 上記1.2では問題がある場合、仮想環境をgit内のvenvフォルダからリモート環境に複製することが可能でしょうか？




実際に使っているわけではなく少し調べた程度ですので、もしかしたら間違いがあるかもしれません。

* * *

`venv` で管理するのは Python インタプリタ (= Python 自体のバージョン等)
ではなく、あくまでライブラリやモジュール、およびそれらのバージョン情報です。

また、既に確認された通り venv で作成した環境に含まれる pyvenv.cfg
等には環境依存のファイルパスが含まれるので、これらは異なる環境にそのまま共有できるわけではなさそうです。  
(Git でクローンしたら即使えるようになるわけでない)

venv の環境を共有したい場合、venv ディレクトリを直接共有するのではなく、venv 環境にインストールしたパッケージの情報をまとめた
`requirements.txt` を作成し、このファイルを共有する形になりそうです。

**共有元:**

  * venv 関連のファイルを除外する `.gitignore` を用意
  * venv 環境を構築、パッケージをインストール
  * `requirements.txt` を作成
  * Git で共有

**共有先:**

  * venv 環境を構築
  * Git リポジトリからクローンして `requirements.txt` を取得
  * `requirements.txt` を元にパッケージをインストール

* * *

venv 用の .gitignore

**例:**

<https://www.toptal.com/developers/gitignore/api/venv>

[code]

    # Created by https://www.toptal.com/developers/gitignore/api/venv
    # Edit at https://www.toptal.com/developers/gitignore?templates=venv
    
    ### venv ###
    # Virtualenv
    # http://iamzed.com/2009/05/07/a-primer-on-virtualenv/
    .Python
    [Bb]in
    [Ii]nclude
    [Ll]ib
    [Ll]ib64
    [Ll]ocal
    [Ss]cripts
    pyvenv.cfg
    .venv
    pip-selfcheck.json
    
    # End of https://www.toptal.com/developers/gitignore/api/venv
    
[/code]

パッケージ一覧から `requirements.txt` を作成

[code]

    pip freeze > requirements.txt
    
[/code]

`requirements.txt` を元にパッケージをインストール

[code]

    pip install -r requirements.txt
    
[/code]

**参考:**

[PyCharmでVenvをGitで共有するときにすること](https://hiropon-progra.com/?p=82)  
[virtualenvをgitで管理すると便利 -
Qiita](https://qiita.com/m-masaki72/items/7ba34e31d9f08662f1ee)  
[python3のvenvでプロジェクト毎にライブラリを管理する](https://akogare-
se.hatenablog.com/entry/2019/01/02/220330)




実際に使っているわけではなく少し調べた程度ですので、もしかしたら間違いがあるかもしれません。

* * *

`venv` で管理するのは Python インタプリタ (= Python 自体のバージョン等)
ではなく、あくまでライブラリやモジュール、およびそれらのバージョン情報です。

また、既に確認された通り venv で作成した環境に含まれる pyvenv.cfg
等には環境依存のファイルパスが含まれるので、これらは異なる環境にそのまま共有できるわけではなさそうです。  
(Git でクローンしたら即使えるようになるわけでない)

venv の環境を共有したい場合、venv ディレクトリを直接共有するのではなく、venv 環境にインストールしたパッケージの情報をまとめた
`requirements.txt` を作成し、このファイルを共有する形になりそうです。

**共有元:**

  * venv 関連のファイルを除外する `.gitignore` を用意
  * venv 環境を構築、パッケージをインストール
  * `requirements.txt` を作成
  * Git で共有

**共有先:**

  * venv 環境を構築
  * Git リポジトリからクローンして `requirements.txt` を取得
  * `requirements.txt` を元にパッケージをインストール

* * *

venv 用の .gitignore

**例:**

<https://www.toptal.com/developers/gitignore/api/venv>

[code]

    # Created by https://www.toptal.com/developers/gitignore/api/venv
    # Edit at https://www.toptal.com/developers/gitignore?templates=venv
    
    ### venv ###
    # Virtualenv
    # http://iamzed.com/2009/05/07/a-primer-on-virtualenv/
    .Python
    [Bb]in
    [Ii]nclude
    [Ll]ib
    [Ll]ib64
    [Ll]ocal
    [Ss]cripts
    pyvenv.cfg
    .venv
    pip-selfcheck.json
    
    # End of https://www.toptal.com/developers/gitignore/api/venv
    
[/code]

パッケージ一覧から `requirements.txt` を作成

[code]

    pip freeze > requirements.txt
    
[/code]

`requirements.txt` を元にパッケージをインストール

[code]

    pip install -r requirements.txt
    
[/code]

**参考:**

[PyCharmでVenvをGitで共有するときにすること](https://hiropon-progra.com/?p=82)  
[virtualenvをgitで管理すると便利 -
Qiita](https://qiita.com/m-masaki72/items/7ba34e31d9f08662f1ee)  
[python3のvenvでプロジェクト毎にライブラリを管理する](https://akogare-
se.hatenablog.com/entry/2019/01/02/220330)

