2016-04-17 14 views
1

編集:この質問に重複して投票した場合、別の質問と多少類似しているため、少なくとも重複していると報告するのではなく、 。もしあなたがそれをしたら、それは重複していないことを直ちに理解するでしょう。私は単にもっと広い文脈を見せようとしているだけです。pythonインタープリタより新しいバージョンのvirtualenv

私のディストリビューションでは、まだPython 2.6をPythonインタプリタとして使用しています。今はPython 2.7が必要なモジュールを使いたいと思っています。私はPython 2.7をインストールしましたが、それは他のアプリケーションを破壊します。だから私は通訳としてのPython 2.7で仮想環境をセットアップします。

virtualenv -p ~/pkg/bin/python2.7 venv 

私は、仮想環境と実行のpythonを有効にした場合、新たなインタプリタが使用されています。良い!今はimportモジュールが必要です。

import gtk 

これはグローバルに(つまりPython 2.6では)動作しますが、私の仮想環境(Python 2.7)では動作しません。私は、仮想環境で同じsys.pathを設定しようとしましたが、これは、このような

やや期待されている

ImportError: /usr/lib64/python2.6/site-packages/gtk-2.0/glib/_glib.so: undefined symbol: PyUnicodeUCS4_DecodeUTF8

として私にエラーを与えるだろう。

pip search gtk 

検索は、どちらかのいずれかの結果がつながりません。私の最高の推測は、ソースからgtkをインストールし、Python 2.7に対してコンパイルする必要があるということです。しかし、これは他の依存関係を引っ張り、その穴を約7〜8ステップ倒して辞任しました。

この問題を解決する簡単な方法はありますか?

+2

[モジュールをインポートしようとしています:未定義シンボル:PyUnicodeUCS4 \ _ DecodeUTF8](http://stackoverflow.com/questions/16871799/trying-to-import-a-module-undefined-symbol-pyunicodeucs4-decodeutf8) – snakecharmerb

+1

@ snakecharmerbではありません。そして、pfnuesel:いいえ、あなたはPython 2.7でPython 2.6 C拡張を使うことはできません。代わりに:あなたのオペレーティングシステムをアップグレードして、2.7 *または*の良いPython 3を得るようにしてください。 –

+0

@AnttiHaapalaはい、それは私には意味があります。残念なことに、数千のサーバーで動作するサーバーオペレーティングシステムであるため、アップグレードは良いアドバイスですが、残念ながら可能ではありません。 – pfnuesel

答えて

1

あなたが最初にあなたの仮想環境をアクティブにした後、あなたはあなたが仮想環境を作成する場合(例えば、pip install pep8-naming

、それは基本的にはPythonの別のスタンドアロンインストールとして動作必要とするすべてのパッケージをインストールする必要があります。以前にgtk(または他のパッケージ)をグローバルPython 2.6インスタンスにインストールした場合、それはPython 2.7仮想環境では利用できません。

代わりに、環境に切り替えた後、必要なパッケージを再インストールする必要があります。

例えば、私のMac上で、デフォルトのシステムのpythonは2.7

$ which python 
/Library/Frameworks/Python.framework/Versions/2.7/bin/python 

あるしかし、私は多くのニシキヘビがインストールされている:

$ python <tab><tab> 
python    python2.7-32  python3.2m-config python3.4m   pythonw2.7-32 
python-32   python2.7-config python3.3   python3.4m-config pythonw3 
python-config  python3   python3.3-32  pythontex   pythonw3-32 
python2   python3-32   python3.3-config pythonw   pythonw3.2 
python2-32   python3-config  python3.3m   pythonw-32   pythonw3.2-32 
python2-config  python3.2   python3.3m-config pythonw2   pythonw3.3 
python2.6   python3.2-32  python3.4   pythonw2-32  pythonw3.3-32 
python2.6-config python3.2-config python3.4-32  pythonw2.6   
python2.7   python3.2m   python3.4-config pythonw2.7   

私は新しいvirtualenvのを作成した場合、あなたはそれを持って見ることができますインストールされている最小限のパッケージのみ

$ mkvirtualenv -p `which python3.4` test 
Running virtualenv with interpreter /Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4 
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.4' 
New python executable in test/bin/python3.4 
Also creating executable in test/bin/python 
Installing setuptools, pip, wheel...pdone. 
$ pip list 
pip (7.1.2) 
setuptools (18.2) 
wheel (0.24.0) 
+0

私はそれをすべて理解しています。私の質問は、システムにインストールされているインタープリタよりも新しいインタープリターに 'gtk'をインストールする方法です。 – pfnuesel

+0

@pfnueselでは、起動したvirtualenvの/からpipを使用します。 – rkersh

+0

...正確に動作していません。私の質問を読みましたか? – pfnuesel

関連する問題