サーバーなど環境を移動した時に、Pythonの対応

コピー後、以下のようなエラーが出て実行できない。

基本は、OS上のPythonではなく、コピーした仮想環境下で実行すべきかと思う。
(OS上のPythonを汚さないため、できるだけ以前の環境を維持し、UpgradeもNG。)

$ pip freeze
Traceback (most recent call last):
File "/opt/script/python/kaso/opendata/bin/pip", line 5, in <module>
from pip._internal.cli.main import main
ModuleNotFoundError: No module named 'pip'

解決方法(1)

$ wget https://bootstrap.pypa.io/get-pip.py
$ python3 get-pip.py
Collecting pip
Downloading pip-22.0.4-py3-none-any.whl (2.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 41.3 MB/s eta 0:00:00
Collecting setuptools
Downloading setuptools-61.3.0-py3-none-any.whl (1.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.1/1.1 MB 68.4 MB/s eta 0:00:00
Collecting wheel
Downloading wheel-0.37.1-py2.py3-none-any.whl (35 kB)
(動作確認)
$ pip --version
pip 22.0.4 from /opt/script/python/kaso/opendata/lib/python3.8/site-packages/pip (python 3.8)
$ pip3 --version
pip 22.0.4 from /opt/script/python/kaso/opendata/lib/python3.8/site-packages/pip (python 3.8)

解決方法(2)※エラーが消えるが、モジュールも消えるので追加する

(事前に前の環境で、$ pip freeze で導入したモジュールを確認しておく必要がある)

(移動直後は、空っぽになっている)
$ pip freeze
$

(必要なモジュールを導入する)
$ pip install bs4 certifi chardet DateTime .......
(前の環境[$ pip freeze > kankyo.txt]を一括モジュール実行する)
$ pip install -r < kankyo.txt

(今後のため、バックアップしておくことを習慣にしましょう♬)
$ pip freeze > kankyo.txt 
$ cat kankyo.txt 
beautifulsoup4==4.10.0
bs4==0.0.1
certifi==2021.10.8
chardet==4.0.0
charset-normalizer==2.0.12
DateTime==4.4
idna==3.3
pytz==2022.1
requests==2.27.1
soupsieve==2.3.1
urllib3==1.26.9
zope.interface==5.4.0
タイトルとURLをコピーしました