94866
# 質問

Blenderをインストールした際に入っているPythonのバージョンをpython3.9からPython
3.7.10に変更する方法を教えていただけないでしょうか。  
ただし、Blenderのバージョンは2.93.3で変更しないようにお願い致します。

下記のように、blenderからpythonを呼び出したいと考えております。

```

    blender --background --python hoge.py
    
```

(実際にはhoge.pyはこちらのリポジトリhttps://github.com/PKU-
EPIC/GraspNeRF/blob/main/run_simgrasp.sh#L22 のscripts/sim_grasp.py です。)

# 自分で試したこと

blenderは下記のようにセットアップしました。

```

    wget https://mirror.clarkson.edu/blender/release/Blender2.93/blender-2.93.3-linux-x64.tar.xz
    tar -C /usr/local -Jxf blender-2.93.3-linux-x64.tar.xz
    export PATH=$PATH:/usr/local/blender-2.93.3-linux-x64
    
```

blenderをダウンロードした際に入っているpythonのディレクトリは下記の通りです。  
/usr/local/blender-2.93.3-linux-x64/2.93/python/bin/python3.9  
そこで下記のようにディレクトリを削除しました。

```

    rm -r /usr/local/blender-2.93.3-linux-x64/2.93/python
    
```

削除した部分にpython3.7.10を下記のようにダウンロードして解凍しました。

```

    wget https://www.python.org/ftp/python/3.7.10/Python-3.7.10.tar.xz
    tar -Jxvf Python-3.7.10.tar.xz --no-same-owner
    cd Python-3.7.10
    ./configure --prefix=/usr/local/blender-2.93.3-linux-x64/2.93/python --enable-optimizations --with-openssl=/usr/local/ssl
    make
    make install
    
```

これで`/usr/local/blender-2.93.3-linux-x64/2.93/python/bin/python3.7`が配置されます。  
ここで下記を実行すると、以下のようなエラーメッセージが出ました。  
実行したコード：

```

    blender --background --python hoge.py
    
```

エラーメッセージ；

```

    Blender 2.93.3 (hash 8b80d19f3641 built 2021-08-17 23:40:09)
    Python path configuration:
      PYTHONHOME = '/usr/local/blender-2.93.3-linux-x64/2.93/python'
      PYTHONPATH = (not set)
      program name = '/usr/local/blender-2.93.3-linux-x64/blender'
      isolated = 0
      environment = 1
      user site = 0
      import site = 1
      sys._base_executable = '/opt/conda/bin/python'
      sys.base_prefix = '/usr/local/blender-2.93.3-linux-x64/2.93/python'
      sys.base_exec_prefix = '/usr/local/blender-2.93.3-linux-x64/2.93/python'
      sys.platlibdir = 'lib'
      sys.executable = '/opt/conda/bin/python'
      sys.prefix = '/usr/local/blender-2.93.3-linux-x64/2.93/python'
      sys.exec_prefix = '/usr/local/blender-2.93.3-linux-x64/2.93/python'
      sys.path = [
        '/usr/local/blender-2.93.3-linux-x64/2.93/python/lib/python39.zip',
        '/usr/local/blender-2.93.3-linux-x64/2.93/python/lib/python3.9',
        '/usr/local/blender-2.93.3-linux-x64/2.93/python/lib/python3.9/lib-dynload',
      ]
    Internal error initializing Python!
    Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
    Python runtime state: core initialized
    ModuleNotFoundError: No module named 'encodings'
    
```

sys.pathの項目を見ると、まだPython3.9を認識しているようです。  
これをPython 3.7.10に変更するには、どのようにすればいいでしょうか。  
(単純にpythonのbinファイルを置き換えるだけでは駄目そうでした。)  
また、sys.executable =
'/opt/conda/bin/python'はblenderの外で自分が普段使っているpython環境です(python3.7)

# 実行環境

```

    ホストPC：Ubuntu 18.04.3 LTS
    Dockerコンテナ: Ubuntu 18.04.5 LTS
    blender: blender-2.93.3-linux-x64
    
```

以上、お手数ですが何卒宜しくお願い致します。
CC BY-SA 4.0
2023-05-12T09:47:42.487
94830
2023-05-16T08:51:44.870
30280
question
python blender
Blender's bundled Pythonのバージョンを変更する方法
@oriri 様にコメントいただいた通り、Blender's bundled Python のバージョンを変更するのは厳しいようでした。  
ただしBlender's bundled Python
のバージョンは3.9のまま、外部のPython3.9をblenderとは別に新規にダウンロードしたところ、`python3.9 -m pip install
pybullet==2.7.9`が通るようになり無事解決しましたので自己回答させていただきます。  
blender內部のpythonは、--python-use-system-
envオプションでPYTHONPATHを指定するとblender外部のモジュールを使用できるので外からインストールしたpybullet==2.7.9が使えてリポジトリのコードの動作確認が出来ました。
CC BY-SA 4.0
2023-05-16T08:51:44.870
94866
2023-05-16T08:51:44.870
30280
94830
answer