Ubuntu Jaunty に upgrade した。
幾つかの拡張モジュールが動かなくなったのを期に、常用のPython環境を自分でビルドしたものからvirtualenvに変更。 .bashrc で PATH に追加した。
すると、meldをはじめ幾つかのパッケージが動かなくなった。見てみると、 #!/usr/bin/env python って…そこは #!/usr/bin/python として欲しかったな。
でも、virtualenv実行時に --no-site-packages をした覚えはない。 virtualenv だとディストリビューションパッケージはそのまま流用できると思って virtualenv したのに…と思って、 site.py とかを除いてみた。
Ubuntu では、 Python非標準パッケージを /usr/lib/python2.6/dist-packages にインストールしていた。普通は site-packages で、virtualenvもsite-packagesを期待しているので、うまくディストリビューションパッケージをimportできない。
virtualenv の lib/python2.6/site.py に次の修正を行って対策完了。
--- site.py.old 2009-04-22 13:46:01.000000000 +0900
+++ site.py 2009-04-22 13:26:57.000000000 +0900
@@ -215,7 +215,7 @@
sitedirs = [os.path.join(prefix,
"lib",
"python" + sys.version[:3],
- "site-packages"),
+ "dist-packages"),
os.path.join(prefix, "lib", "site-python"),
os.path.join(prefix, "python" + sys.version[:3], "lib-dynload")]
lib64_dir = os.path.join(prefix, "lib64", "python" + sys.version[:3], "site-packages")
先にに書いた方法だと、逆に virtual/lib/python2.6/site-packages がパスに追加されない。
正しくはこう。
--- site.py.old 2009-04-22 13:46:01.000000000 +0900
+++ site.py 2009-04-23 13:40:38.000000000 +0900
@@ -212,10 +212,15 @@
"python" + sys.version[:3], "site-packages")]
elif os.sep == '/':
- sitedirs = [os.path.join(prefix,
+ sitedirs = [
+ os.path.join(prefix,
"lib",
"python" + sys.version[:3],
"site-packages"),
+ os.path.join(prefix,
+ "lib",
+ "python" + sys.version[:3],
+ "dist-packages"),
os.path.join(prefix, "lib", "site-python"),
os.path.join(prefix, "python" + sys.version[:3], "lib-dynload")]
lib64_dir = os.path.join(prefix, "lib64", "python" + sys.version[:3], "site-packages")