मेरे पास एक पायथन फ़ाइल है जो निम्न कोड का उपयोग करके एकाधिक पैकेज आयात करती है:

from pyzoltan.core.carray import UIntArray, DoubleArray
from pyzoltan.core import zoltan

पहले दो आयात, यानी UIntArray और DoubleArray सफलतापूर्वक आयात किए जाते हैं लेकिन तीसरा आयात यानी zoltan ImportError देता है।

pyzoltan/core निर्देशिका में निम्न फ़ाइलें हैं:

|-- __init__.py
|-- __init__.pyc
|-- carray.pxd
|-- carray.pxd.mako
|-- carray.pyx
|-- carray.pyx.mako
|-- carray.so
|-- generator.py
|-- generator.pyc
|-- msstdint.h
|-- tests
|   |-- 3d_partition.py
|   |-- 3d_partition.pyc
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- __pycache__
|   |   |-- test_zoltan.cpython-27-PYTEST.pyc
|   |-- geometric_partitioner.py
|   |-- geometric_partitioner.pyc
|   |-- mesh.txt
|   |-- test_zoltan.py
|   |-- test_zoltan.pyc
|   |-- zcomm.py
|   |-- zcomm.pyc
|-- zoltan.pxd
|-- zoltan.pyx
|-- zoltan_comm.pxd
|-- zoltan_comm.pyx
|-- zoltan_dd.pxd
|-- zoltan_dd.pyx
|-- zoltan_utils.py
|-- zoltan_utils.pyc

क्या समस्या zoltan.mako और zoltan.so की अनुपस्थिति या कुछ और के कारण है?

2
ba11b0y 4 अगस्त 2018, 13:37

2 जवाब

आपके पास carray.so है लेकिन zoltan.so नहीं है। पूर्व में जो भी निर्माण प्रक्रिया का उत्पादन किया गया था, वह बाद वाले का भी उत्पादन करने में सक्षम होना चाहिए (यानी cython को zoltan.pyx और zoltan.pxd पर चलाकर)।

0
John Zwinck 4 अगस्त 2018, 13:57

आप pyzoltan/core/zoltan.so फ़ाइल खो रहे हैं।

.pyx फ़ाइल को साइथन द्वारा एक .c फ़ाइल में संकलित किया जा सकता है, जिसे C कंपाइलर द्वारा .so फ़ाइल (या .pyd विंडोज़ पर फ़ाइल में संकलित किया जा सकता है। )

साइथन कोड बनाने के लिए कई तरीके हैं। सामान्य/अनुशंसित तरीका एक डिस्टुटिल्स/सेटअपटूल setup.py फ़ाइल लिखना है। सामग्री कुछ इस तरह दिख सकती है:

from distutils.core import setup
from Cython.Build import cythonize

setup(
    ext_modules=cythonize("zoltan.pyx")
)    

और फिर आप चलाकर .so फ़ाइल बना सकते हैं

python setup.py build_ext --inplace

लेकिन वास्तव में आपको अपना स्वयं का setup.py लिखने की आवश्यकता नहीं है। यदि आप मुख्य निर्भरता स्थापित करते हैं (और सुनिश्चित करते हैं कि वे संस्करण को संतुष्ट करते हैं) आवश्यकताएँ) फिर स्थापना का पालन करें निर्देश तो आपके पास zoltan जाने के लिए तैयार होना चाहिए।

0
unutbu 4 अगस्त 2018, 18:49
मैं एक setup.py का उपयोग करके zoltan.so संकलित करने में सक्षम था, लेकिन अब मेरा पायथन कोड चलाने पर, मुझे एक और आयात त्रुटि मिलती है ImportError: /home/invinciblycool/Documents/SEM5/pdc_lab/venv/local/lib/python2.7/site-packages/pyzoltan/core/zoltan.so: undefined symbol: Zoltan_Set_Obj_List_Fn मुझे पता है कि यह पता लगाना बहुत कठिन हो सकता है, लेकिन कोई मदद है सराहना की।
 – 
ba11b0y
4 अगस्त 2018, 15:01
हां, मैंने पहले ही पाइप के साथ पीईएसपीएच स्थापित कर लिया है, लेकिन एक स्क्रिप्ट जिसमें एक आवश्यकता के रूप में ज़ोल्टन शामिल है, उसी त्रुटि के कारण काम नहीं कर रहा है जबकि मूल निर्भरता बिल्कुल ठीक काम करती प्रतीत होती है।
 – 
ba11b0y
4 अगस्त 2018, 15:26
और pyzoltan PySPH का हिस्सा नहीं है, कृपया स्थापना निर्देश देखें। If you want to use PySPH in parallel, you will need mpi4py and the Zoltan data management library. PySPH will work in serial without mpi4py or Zoltan. Simple build instructions for Zoltan are included below.
 – 
ba11b0y
4 अगस्त 2018, 15:36
निर्देश बिल्ड स्क्रिप्ट का संदर्भ लें: ./build_zoltan.sh INSTALL_PREFIX। यदि आप बिल्ड स्क्रिप्ट को चलाने में समस्याओं का सामना कर रहे हैं, तो आपका प्रश्न इस कमांड को चलाने के बाद आपको प्राप्त होने वाले आउटपुट को दिखाना चाहिए।
 – 
unutbu
4 अगस्त 2018, 19:02