システム開発・構築の神様

新しいサービスや技術を使った開発や構築。その他不具合解決など

古いAWSのEC2にLet's EncryptのSSL証明書をインストールするとpkg_resources.DistributionNotFound: The 'virtualenv==15.1.0'エラーが発生

ここ最近での流行と言えば、Let's EncryptのSSL証明書でしょうか。

 

クラウドホスティングサーバーが出始めた頃は、セキュリティー的な問題を含めて中々浸透していなかったのですが、最近ではごく当たり前のようにクラウドが利用されるようになりました。

 

それと同じ現象が、SSLにもやってきている感じです。こちらは無償利用で、さらにメリットが高いです。

 

認知度も上がってきたので、クライアントさんに説明するのも楽になりましたね。

 

レンタルサーバーなどでは、標準で利用できるところが増えているので、今後はますます標準化されていくのだと思われます。

 

将来的に有償にならないことを願っています。。。

 

さて、そんな便利なLet's EncryptのSSL証明書ですが、古いAWSサーバーに導入しようとした時に、いくつかのエラーに悩まされてしまいました。

 

Traceback (most recent call last):
File "/usr/local/bin/virtualenv", line 6, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 3049, in <module>
@_call_aside
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 3033, in _call_aside
f(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 3062, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 660, in _build_master
return cls._build_from_requirements(__requires__)
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 673, in _build_from_requirements
dists = ws.resolve(reqs, Environment())
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 858, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'virtualenv==15.1.0' distribution was not found and is required by the application

 

です。

 

AWSのPythonが2.6なので2.7に変更したのですが、上記エラーでLet's Encryptが実行できません。

 

いろいろと試したところ、リンクを貼り直すことで修復できました。

 

rm /usr/local/bin/virtualenv
ln -s /usr/bin/virtualenv /usr/local/bin/virtualenv

 

ちなみに

 

古いvirtualenvは

 

#!/usr/bin/python2.7
# EASY-INSTALL-ENTRY-SCRIPT: 'virtualenv==15.1.0','console_scripts','virtualenv'
__requires__ = 'virtualenv==15.1.0'
import re
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(
load_entry_point('virtualenv==15.1.0', 'console_scripts', 'virtualenv')()
)

 

新しいvirtualenvは

 

#!/usr/bin/python2.7

# -*- coding: utf-8 -*-
import re
import sys

from virtualenv import main

if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(main())
~

 

です。

 

Pythonにしろ、Node.jsにしろ、複数のバージョン対応の管理方法が訳が分からないですね・・・

 

難しい・・・

MACのVmWare FusionでWindowsを使っていて残念(デメリット)なところとは?

MACを使っていての楽しみとは?毎年秋にMAC OSがメジャーバージョンアップすることだと思います。

 

しかも無償!(Windowsも10から同じく無償になっています)

 

本来なら気分が良いはずなのですが・・・

 

毎年、気分が良くなったと同時に気分が悪くなります・・・

 

っと言うのも、仮想化ソフトのVmWare FusionがMAC OSのバージョンアップに合わせて、更新(こちらは有料)してくるからです。

 

毎年、直ぐにVmWare Fusionをバージョンアップしていますが、今年はしばらく放置してみることにしました。。。

 

VmWare Fusionをバージョンアップしなくても、今のところ壊滅的な不具合に遭遇していません・・・

 

ただ・・・

 

変な残像がWindows側の画面に残ったりして目障りなのを除けば・・・

 

右下の通知ポップアップ画面?の残像が残りますね。

 

後、急激に重くなったりする時もありました。(キーボードの文字が数秒遅れになる)

 

この点が100%解消するなら、今すぐ更新したいと思うのですが・・・

 

あ~あ、毎年悩みがつきない・・・