Python3: ImportError: मॉड्यूल मल्टीप्रोसेसिंग से मूल्य का उपयोग करते समय '_ctypes' नाम का कोई मॉड्यूल नहीं


127

मैं उबंटू का उपयोग कर रहा हूं और पायथन 2.7.5 और 3.4.0 स्थापित किया है। पायथन 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 में स्थापित है ।

क्या मैंने पायथन 3.4 को सही ढंग से अपडेट किया?

एक बात मैंने देखी कि अजगर 3.4 usr / लोकल / लीब में स्थापित है, जबकि Python 3.3.2 अभी भी usr / lib में स्थापित है , इसलिए इसे अधिलेखित नहीं किया गया था।


ऐसा प्रतीत होता है कि "3.4.0 के स्रोत को स्थापित करने" के दौरान कुछ गड़बड़ हो गई। इसका सबसे सही मतलब क्या है? क्या वह आदेश 3.3.2 में काम कर रहा था?
यांत्रिक_मीट

मैं सूडो मेक इन कमांड का उपयोग करके सोर्स कोड से इंस्टॉल करता हूं। हां बहुप्रोसेसर से आयात मान 3.3.2
htc_m8

8
_ctypeslibffi-devनिर्भरता उपलब्ध नहीं होने के कारण नहीं बनाया गया था। इसके बजाय डेडस्कैप पीपीए का उपयोग करने पर विचार करें ।
एरिक सन

11
Libffi-dev को स्थापित करना और python3.4 को फिर से स्थापित करना मेरे लिए समस्या तय किया
htc_m8

जवाबों:


227

libffi-devPython3.7 को स्थापित करना और फिर से स्थापित करना मेरे लिए समस्या तय कर दिया।

साफ-साफ निर्माण करने के लिए पाई 3.7 libffi-dev की आवश्यकता है अन्यथा बाद में सामान विफल हो जाएगा

यदि आरएचईएल / फेडोरा का उपयोग कर रहे हैं:

yum install libffi-devel

या

sudo dnf install libffi-devel

यदि डेबियन / उबंटू का उपयोग कर रहे हैं:

sudo apt-get install libffi-dev

35
मैंने स्थापित किया है, libffi-devलेकिन मुझे अभी भी यह त्रुटि मिल रही है
tushar_ecmc

2
यदि आप linux का उपयोग कर रहे हैं ldconfigतो नया लोड करने के लिए निष्पादित करें libffi.so। का मुख्य उद्देश्य apt-get install libffi-devनामक एक फ़ाइल को स्थापित करने के लिए है libffi.soजो आप इसे से जांच कर सकते हैं dpkg -L libffi-dev@tushar_ecmc
बेन-xue

15
ध्यान दें कि यदि आपने संकलित किया है तो आप स्वयं पाइथन वितरण हैं (उदाहरण के माध्यम से pyenv install), आपको पैकेज को स्थापित करने के बाद वितरण को फिर से संकलित करना होगा।
nedned

121

एक ताजा डेबियन छवि पर, क्लोनिंग 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 स्थापित और मेरे लिए काम कर रहा है।

सही अद्यतन

ऐसा लगता है कि मैंने कहा कि मैं इस उत्तर को कुछ और स्पष्टीकरण के साथ अपडेट करूंगा और दो साल बाद मेरे पास जोड़ने के लिए बहुत कुछ नहीं है।

  • यह एसओ पोस्ट बताता है कि क्यों कुछ पुस्तकालयों की तरह python-devआवश्यक हो सकता है।
  • यह एसओ पद बताता है कि क्यों कोई मेक कमांड में तर्क के altinstallविपरीत उपयोग कर सकता है ।install

इसके अलावा मुझे लगता है कि चुनाव या तो #includeनिर्देश के लिए देख रहे cpython codebase के माध्यम से पढ़ने के लिए होगा जिसे पूरा करने की आवश्यकता है, लेकिन मैं आमतौर पर क्या करता हूं पैकेज को स्थापित करने की कोशिश कर रहा हूं और आउटपुट के माध्यम से पढ़ता रहा जब तक आवश्यक पैकेज स्थापित नहीं करता सफल होता है।

मुझे इंजीनियर, मैनेजर और प्रोग्रामर की कहानी की याद दिलाता है , जिसकी कार पहाड़ी से लुढ़कती है


3
बहुत खुबस। अब, क्या आप मुझे बता सकते हैं कि आपको ऊपर की सूची कैसे मिली? प्रयास और त्रुटि द्वारा? : -ओ
वेकी

4
ईमानदारी से, @Veky I ने त्रुटि के लिए एक वेब खोज की, "ImportError: No मॉड्यूल जिसका नाम '_ctypes' है" और उसके चारों ओर खोदा, संभवतः काम करने से पहले कुछ चीजों की कोशिश की। आदि अपार्ट, अजगर, मेकअप की मेरी अल्प समझ, के साथ स्पष्ट करने के लिए इस सवाल का जवाब अपडेट करेगा
MikeiLL

इसके python3-devबजाय होना चाहिए python-devpython-devके लिए लगता है python2
टिमो

आप एक स्रोत कोड रेपो को क्लोन क्यों करेंगे, और फिर उपयोग करेंगे sudo apt-get? इसका कोई मतलब नहीं है। sudo apt-getपहले से संकलित कोड के डाउनलोड को संभालता है, तो आप कोड को क्यों डाउनलोड करते हैं और फिर इसका उपयोग नहीं करते हैं?
रयान

1
@ मायकीएलएल मुझे एहसास हुआ कि sudoआपके द्वारा डाउनलोड किए गए स्रोत कोड का निर्माण करने के लिए सभी विवरण पूर्व-आवश्यकताएँ स्थापित कर रहे हैं। ./configureऔर makeसामान उन चीजों को स्थापित करने की आवश्यकता है।
रयान

30

यदि आप pyenv का उपयोग करते हैं और त्रुटि प्राप्त करते हैं, तो "_ctypes 'नाम का कोई मॉड्यूल नहीं है" (जैसे मैं हूँ) Debian / Raspbian / Ubuntu पर आपको इस आदेश को चलाने की आवश्यकता है:

sudo apt-get install libffi-dev
pyenv uninstall 3.7.6
pyenv install 3.7.6

अपने संस्करण का अजगर 3.7.6 के बजाय रखें


ओवरफ्लो को रोकने के लिए आपका स्वागत है। क्या आप अधिक जानकारी प्रदान कर सकते हैं? संदर्भ आदि और stackoverflow.com/help/how-to-answer
Nodejs-nerd

उत्तर के लिए धन्यवाद, उच्चतम मतदान की पूरी सूची थी जिसकी मुझे आवश्यकता थी, लेकिन इससे मुझे pyenvवास्तव में काम करने के लिए पुन: स्थापित करने की याद आई । पाइनेव का उपयोग करना स्रोत कोड को हथियाने और makeसुनिश्चित करने के लिए सभी सामानों की तुलना में आसान है।
ड्रैगन 788

इसने मेरे लिए उबंटू में काम किया। सरल और प्रभावी।
फिल

धन्यवाद, यह मददगार था। पाइनेव के लिए पूर्वापेक्षा की पूरी सूची के लिए github.com/pyenv/pyenv/wiki/Common-build-problems#prerequisites
Mucha

आपको पहले पायथन की स्थापना रद्द करने की आवश्यकता नहीं है। बस इसे फिर से स्थापित करना पायथन बाइनरी को फिर से जोड़ देगा और इसकी आवश्यकता है।
रुसी

22

CentOS या किसी रेडहैट लिनक्स मशीन में Python 3.7 को स्थापित करने के लिए विस्तृत चरण:

  1. पाइथन को 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

14

सोचा था कि मैं सेंटोस इंस्टॉल जोड़ूंगा:

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

अजगर संस्करण की जाँच करें:

python3 -V

Virtualenv बनाएँ:

virtualenv -p python3 venv


2
यह निम्न गुणवत्ता के रूप में चिह्नित किया गया था, और मैं इसे समीक्षा कतार में देख रहा हूं। यह वास्तव में एक अकेले जवाब के रूप में काम नहीं करता है। मैं विलोपन की सिफारिश करने जा रहा हूं, लेकिन शायद आप इसे बढ़ाकर इसे सुधार सकते हैं?
dbliss

11

मैं इस त्रुटि प्राप्त जब मैं स्थापित करने की कोशिश की पायथन 3.7.3 में उबंटू 18.04 अगले आदेश के साथ: $ pyenv install 3.7.3। स्थापना चलने के बाद सफल हुई $ sudo apt-get update && sudo apt-get install libffi-dev(जैसा कि यहां बताया गया है )। वहां मसला हल हो गया


6

कोई भी हल काम नहीं आया। आपको अपने अजगर को फिर से जोड़ना होगा; एक बार सभी आवश्यक पैकेज पूरी तरह से स्थापित हो गए थे।

इसका पीछा करो:

  1. आवश्यक पैकेज स्थापित करें
  2. Daud ./configure --enable-optimizations

https://gist.github.com/jerblack/798718c1910ccdd4ede92481229043be


2
महान जवाब वास्तव में। हर कोई उल्लेख करता है कि आपको लिबफी-डेवेल की आवश्यकता है और यह इसे हल करेगा, समस्या यह है कि आपको अजगर को फिर से बनाने की भी आवश्यकता है। मैं अलस्सोटी ने कामवासना को त्याग दिया।
अलेक्जेंडर फुलर

3

का संदर्भ लें इस सूत्र या इस सूत्र , libffi की अनुकूलित स्थापना के लिए, यह मुश्किल Python3.7 libffi के पुस्तकालय स्थान को खोजने के लिए है। CONFIGURE_LDFLAGSउदाहरण के लिए, मेकफाइल में चर सेट करने के लिए एक वैकल्पिक विधि है CONFIGURE_LDFLAGS="-L/path/to/libffi-3.2.1/lib64"


लिंक टूट गया है। जैसा कि आप यहाँ दिखाते हैं मैंने मेकफाइल में संशोधन करने का प्रयास किया लेकिन यह काम नहीं किया। _ctypes अभी भी नहीं बन रहा है।
user5915738

मैंने एक और थ्रेड लिंक जोड़ा है।
pengchy

2

मेरा समाधान: apt-get के साथ libffi-dev को स्थापित करने में मदद नहीं मिली। लेकिन इससे मदद मिली: स्रोत से कामेच्छा स्थापित करना और फिर स्रोत से पायथन 3.8 स्थापित करना।

मेरा कॉन्फ़िगरेशन: Ubuntu 16.04 LTS पायथन 3.8.2

क्रमशः:

विजुअल स्टूडियो कोड से डीबगर शुरू करते समय, और रनिंग करते समय मुझे त्रुटि संदेश "ModuleNotFoundError: No मॉड्यूल '' _ctypes 'मिला python3 -c "import sklearn; sklearn.show_versions()"

  • डाउनलोड libffi v3.3 https://github.com/libffi/libffi/releases से
  • libtool इंस्टॉल करें: sudo apt-get install libtool libadi से फ़ाइल README.md बताता है कि ऑटोकॉनफ और ऑटोमेट भी आवश्यक हैं। वे पहले से ही मेरे सिस्टम पर स्थापित थे।
  • डॉक्स के बिना libffi कॉन्फ़िगर करें:

./configure --disable-docs

make check

sudo make install

उसके बाद मेरी अजगर स्थापना _ctypes पा सकती है।


2

इससे डेबियन पर मेरे लिए वही त्रुटि हल हो गई :

sudo apt-get install libffi-dev

और फिर से संकलित करें

संदर्भ: अंक ३१६५२


0

यदि आपको मिनिकोंडा का उपयोग करने में कोई आपत्ति नहीं है , तो आवश्यक बाहरी लाइब्रेरी और _ctypes डिफ़ॉल्ट रूप से इंस्टॉल किए जाते हैं। यह अधिक स्थान लेता है और इसे अजगर के एक पुराने संस्करण का उपयोग करने की आवश्यकता हो सकती है (उदाहरण के लिए इस लेखन के रूप में 3.8.2 के बजाय 3.7.6)।


0

आपको पैकेज मैनेजर से लापता php3 (Python3) मॉड्यूल लोड करना होगा। यदि आपके पास उबंटू है तो मैं सुझाता हूं Synaptic Package Manager:

sudo apt-get install synaptic

वहाँ आप बस लापता मॉड्यूल की खोज कर सकते हैं। ctypes के लिए खोज करें और सभी पैकेजों को स्थापित करें। फिर अपने पायथन डायर के पास जाओ और करो

./configure
make install.

इससे आपकी समस्या का समाधान हो जाना चाहिए।


0

मुझे भी यही समस्या आ रही थी। उपरोक्त किसी भी समाधान ने मेरे लिए काम नहीं किया। मुख्य चुनौती यह थी कि मेरे पास रूट एक्सेस नहीं था। इसलिए, मैं पहली बार libffi के स्रोत को डाउनलोड करता हूं। फिर मैंने इसे सामान्य आदेशों के साथ संकलित किया:

./configure --prefix=desired_installation_path_to_libffi
make 

तब मैंने अजगर का उपयोग करके पुन: संकलित किया

./configure --prefix=/home/user123/Softwares/Python/installation3/  LDFLAGS='-L/home/user123/Softwares/library/libffi/installation/lib64'
make 
make install

मेरे मामले में, 'home / user123 / Softwares / पुस्तकालय / libffi / स्थापना / lib64' LIBFFI संस्थापन निर्देशिका के लिए पथ है जहाँ libffi.so स्थित है। और, / होम / user123 / सॉफ्टवेयर्स / पायथन / इंस्टॉलेशन 3 / पायथन इंस्टॉलेशन डायरेक्टरी का मार्ग है। अपने मामले के अनुसार उन्हें संशोधित करें।


-1

यदि आप कुछ कर रहे हैं तो कोई भी आपके बारे में नहीं सुनेगा क्योंकि "आप इसे गलत तरीके से कर रहे हैं", लेकिन आपको इसे "गलत तरीके" से भी करना होगा क्योंकि बहुत अधिक असाइन (उदाहरण के लिए, मेरे मामले में यह जल्दी ही गलत तरीके से घट जाता है। देवों की टीम से किसी के बारे में शब्द अधिक वजन वाली माँ), आपको सबसे पहले चाहिए:

कामेच्छा प्राप्त करें और इसे अपने उपयोगकर्ता स्थापित क्षेत्र में सामान्य तरीके से स्थापित करें।

git clone https://github.com/libffi/libffi.git
cd libffi
./configure --prefix=path/to/your/install/root
make
make install

फिर अपने पायथन 3 स्रोत पर वापस जाएँ और कोड के इस भाग को python रेटिंग स्रोत के शीर्ष स्तर पर setup.py में खोजें।

        ffi_inc = [sysconfig.get_config_var("LIBFFI_INCLUDEDIR")]
        if not ffi_inc or ffi_inc[0] == '':
            ffi_inc = find_file('ffi.h', [], inc_dirs)
        if ffi_inc is not None:
            ffi_h = ffi_inc[0] + '/ffi.h'
            if not os.path.exists(ffi_h):
                ffi_inc = None
                print('Header file {} does not exist'.format(ffi_h))
        ffi_lib = None
        if ffi_inc is not None:
            for lib_name in ('ffi', 'ffi_pic'):
                if (self.compiler.find_library_file(lib_dirs, lib_name)):
                    ffi_lib = lib_name
                    break

        ffi_lib="ffi"  # --- AND INSERT THIS LINE HERE THAT DOES NOT APPEAR ---
        if ffi_inc and ffi_lib:
            ext.include_dirs.extend(ffi_inc)
            ext.libraries.append(ffi_lib)
            self.use_system_libffi = True

और मैंने जो लाइन ऊपर बताई है उसे टिप्पणी के साथ जोड़ें। यह क्यों आवश्यक है, और लिनक्स प्लेटफार्मों पर '--without-system-ffi` को सम्मान देने के लिए कॉन्फ़िगर करने का कोई तरीका नहीं है, शायद मुझे पता चलेगा कि अगले कुछ घंटों में "असमर्थित" क्यों है, लेकिन सब कुछ है जब से काम किया है। अन्यथा, शुभकामनाएँ ... YMMV।

यह क्या करता है: बस वहाँ तर्क को ओवरराइड करता है और कंपाइलर को जोड़ने के आदेश का कारण बनता है "-लिफी" जो कि वास्तव में इसकी आवश्यकता है। यदि आपके पास पुस्तकालय उपयोगकर्ता-स्थापित है, तो यह संभवत: हेडर का पता लगा रहा है जब तक कि आपके PKG_CONFIG_PATHशामिल हैं path/to/your/install/root/lib/pkgconfig

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.