2015-10-19 15 views
10

​​をインポートすると、私の仮想環境(Python 3.4)内のみで次のエラーが発生します。 virtualenvののvirtualenvでPython ctypesインポートエラーが発生しました

>>> import ctypes 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python3.4/ctypes/__init__.py", line 7, in <module> 
    from _ctypes import Union, Structure, Array 
    ImportError: /home/user/Code/Python/venvs/main/lib/python3.4/lib-dynload/_ctypes.cpython-34m-x86_64-linux-gnu.so: undefined symbol: _PyTraceback_Add 

ピップフリーズ:

beautifulsoup4==4.4.0 
blessings==1.6 
Django==1.8.4 
image==1.4.1 
Pillow==2.9.0 
wheel==0.24.0 

がどのように私はこの問題を解決するのですか?それは、メインのPython 3.4インタプリタで動作します...

+4

3.4.3では、古い '_ctypes_add_traceback'が内部APIの' _PyTraceback_Add'([issue 22462](http://bugs.python.org/issue22462)を参照)に移動されました。それは何とか '_ctypes'拡張モジュールの3.4.3 +ビルドを古いバージョンのPython 3.4で使用しているようです。 – eryksun

+0

ありがとう、@eryksun!それは今働く:) – David

答えて

9

eryksun describedとして、この問題はPythonの3.4。*バージョンのknown bugに関係しているようです。私はthis answer次のPython 3.5にアップグレードすることでUbuntuの14.04でそれを解決するために管理:

sudo apt-get install software-properties-common 
sudo add-apt-repository ppa:fkrull/deadsnakes 
sudo apt-get update 
sudo apt-get install python3.5 python3.5-dev python3.5-venv 
# create a python3.5 virtualenv 
python3.5 -m venv venv 
. ./venv/bin/activate 
python -c 'import ctypes' # throws no errors as opposed to before 

あなたは新しいPythonのバージョンとOSのバージョンにアップグレードすることですサードパーティ製のPPAに依存しない適切な解決策: )

4

仮想環境を破壊して再作成してみてください。私の場合は、依存関係/マイナーアップグレードをインストールする前に仮想環境を作成していましたが、仮想環境に新しいファイルへのシンボリックリンクがあっても、古いマイナーバージョンインタープリタのコピーが使用されました。