web-dev-qa-db-ja.com

Python3:ImportError:モジュールのマルチプロセッシングからの値を使用する場合、「_ ctypes」という名前のモジュールはありません

Ubuntuを使用しており、Python 2.7.5および3.4​​.0をインストールしています。 Python 2.7.5では、変数x = Value('i', 2)を正常に割り当てることができますが、3.4.0ではできません。私は得ています:

Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
   File "/usr/local/lib/python3.4/multiprocessing/context.py", line 132, in Value
      from .sharedctypes import Value
   File "/usr/local/lib/python3.4/multiprocessing/sharedctypes.py", line 10, in <
module>
   import ctypes
   File "/usr/local/lib/python3.4/ctypes/__init__.py", line 7, in <module>
      from _ctypes import Union, Structure, Array
ImportError: No module named '_ctypes'

3.4.0のソースをインストールして、3.3.2に更新しました。 / usr/local/lib/python3.4にインストールされました。

Python 3.4に正しく更新しましたか?

Python 3.4はsr/local/libにインストールされますが、Python 3.3.2はsr/libなので、上書きされませんでした。

74
htc_m8

libffi-devをインストールしてpython3.7を再インストールすると、問題が修正されました。

py 3.7をきれいにビルドするにはlibffi-devが必要です。そうでないと後のものは失敗します

RHEL/Fedoraを使用している場合:

yum install libffi-devel

または

Sudo dnf install libffi-devel

Debian/Ubuntuを使用している場合:

Sudo apt-get install libffi-dev
136
dotbit

新しいDebianイメージで、クローン作成 https://github.com/python/cpython を実行します:

Sudo apt-get update
Sudo apt-get upgrade
Sudo apt-get dist-upgrade
Sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus
Sudo apt-get install libncursesw5-dev libgdbm-dev libc6-dev
Sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev
Sudo apt-get install libssl-dev openssl
Sudo apt-get install libffi-dev

次に、上記でクローン化されたconfigureファイルを実行します。

./configure
make # alternatively `make -j 4` will utilize 4 threads
Sudo make altinstall

3.7がインストールされ、動作しました。

わずかな更新

この回答をさらに説明して更新すると言ったように見えますが、2年後には追加する必要はありません。

  • this SO post は、python-devのような特定のライブラリが必要になる理由を説明しています。
  • this SO post は、 make コマンドでaltinstall引数ではなくinstall引数を使用する理由を説明しています。

それとは別に、選択する必要があるのは、満たされる必要がある#includeディレクティブを探してcpythonコードベースを読むことですが、通常はパッケージをインストールしようとし続け、必要なパッケージをインストールするまで出力を読み続けることです成功します。

車が丘を転がるエンジニア、マネージャー、プログラマー の話を思い出します。

97
MikeiLL

CentOSまたは任意のredhat linuxマシンにPython 3.7をインストールする詳細な手順:

  1. Pythonを https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz からダウンロードします
  2. 新しいフォルダーにコンテンツを抽出します
  3. 同じディレクトリでターミナルを開きます
  4. 以下のコードをステップごとに実行します。
Sudo yum -y install gcc gcc-c++ 
Sudo yum -y install zlib zlib-devel
Sudo yum -y install libffi-devel 
./configure
make
make install
16
Alok Deep

Centosのインストールを追加すると思いました:

Sudo yum -y install gcc gcc-c++ 
Sudo yum -y install zlib zlib-devel
Sudo yum -y install libffi-devel 

pythonバージョンを確認します:

python3 -V

Virtualenvを作成します。

virtualenv -p python3 venv

11
S.E Furgeson

次のコマンドを使用して、Ubuntu 18.04Python 3.7.3をインストールしようとしたときに、このエラーに遭遇しました:$ pyenv install 3.7.3$ Sudo apt-get update && Sudo apt-get install libffi-devを実行した後、インストールは成功しました(提案されたとおり here )。この問題は解決されました あり

3
akrapovich

このスレッド を参照してください。libffiのカスタマイズされたインストールについては、Python3.7がlibffiのライブラリの場所を見つけることは困難です。別の方法は、MakefileでCONFIGURE_LDFLAGS変数を設定することです(例:CONFIGURE_LDFLAGS="-L/path/to/libffi-3.2.1/lib64")。

1
pengchy