
私は、python2.7 と python3.4 が付属する OpenSUSE 13.2 tumbleweed の新規インストールを実行しています。python ベースのライブラリを実行すると、次のエラーが発生し、継続的に問題が発生しますImportError: No module named site
。この問題に対するすべての回答は、PYTHONPATH および/または PYTHONHOME 環境変数を何らかのパスに設定することを扱っていますが、考えられるすべてのパスの組み合わせを試しましたが、何も機能しません。何かアイデアはありますか?
問題のあるライブラリは youtube-dl と flexget です。
答え1
ライブラリ管理を正しく行うのはディストリビューションの仕事です。Python のように、わざわざ難しくしているように見えるものでも、適切に管理する必要があります。
Python 2 プログラムは で実行し
#!/usr/bin/python2
、Python 3 プログラムは で実行します#!/usr/bin/python3
。あるいは、 または として呼び出しますpython2 script
。python3 script
は使用しないでください。#!/usr/bin/env python
これは、Python が 2 つ存在する前から非常に悪いアドバイスでした。可能な限り、ディストリビューションのパッケージ版の Python ライブラリを使用してください。たとえ、古い 1.2.0.0.0.0.2 を使い続けている間に、バージョン 1.2.0.0.0.0.3 がパッケージ化されるまで 1 週間待たなければならないとしても。あるいは数か月待たなければならないとしても。アップグレードされたライブラリが、システムを台無しにするリスクを冒す価値があることは、極めて稀です。ライブラリを使わずに済ませるか、「別のライブラリを使用する」ことは、ほとんどの場合、「このライブラリを手動でインストールしてシステムを台無しにする」よりも良い答えです。
ライブラリを手動でインストールする必要がある場合は、システムに合わせて指示を調整します. 手順は (ほとんど) 開発者自身のシステムでは機能するかもしれませんが、設定方法について膨大な数の仮定が立てられており、そのほとんどはおそらくあなたのシステムには当てはまらないでしょう。つまり、ディストリビューションの関連ドキュメントと注記を徹底的に読み、システムの Python 環境とその動作を理解する必要があります。
指示をシステムに合わせて調整しないと、ディストリビューションが Python ライブラリ管理に関してすべて正しく実行したとしても、Python 環境が台無しになる可能性があります。これは、他のプログラミング言語やスクリプト言語では一般的ではない方法で、Python (および Ruby) では残念ながらよくある結果です。Python の世界には、ディストリビューションやオペレーティング システムを無視し、それを回避すべき障害物 (使用して作業するツールではなく) として扱うようにという誤ったアドバイスが数多くあります。