خطأ مبيك عند تثبيت مبيك4بي على الرغم من التثبيت الصحيح والعمل مبيك
سؤال
لقد قمت بتثبيت مبيش بنجاح على أوبونتو 12.04 ويمكن الحصول على برامج اختبار ج بسيطة لتجميع وتشغيل كما هو متوقع.
الآن أحاول استخدام نقطة لتثبيت مبي 4بي ، ببساطة عن طريق pip install mpi4py
.أنا أعدم لأول مرة sudo apt-get build-dep python-mpi4py
التي عملت بشكل جيد.
أنا أعمل مع فيرتوالينف ، لذلك هذا التثبيت مبي 4بي ليس مع سودو (ولا ينبغي أن يكون).
إليك الأمر والخطأ الذي أصابته بعد مجموعة طويلة من مخرجات وحدة التحكم التي تبدو وكأنها عناصر تجميع عادية (يمكنني الطباعة الكل إذا لزم الأمر ، ولكن أعتقد أن معظمها تحذيرات مترجم القياسية التي تشير إلى أي مشاكل).
(local-dev)espears@espears-w:~$ pip install mpi4py
src/ext/mpi_swig.c: In function ‘SWIG_Python_AddErrorMsg’:
src/ext/mpi_swig.c:859:5: error: format not a string literal and no format arguments [-Werror=format-security]
cc1: some warnings being treated as errors
error: command '/usr/bin/mpicc' failed with exit status 1
----------------------------------------
Cleaning up...
Command /home/espears/.virtualenvs/local-dev/bin/python -c "import setuptools, tokenize;__file__='/home/espears/.virtualenvs/local-dev/build/mpi4py/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-5o6OwN-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/espears/.virtualenvs/local-dev/include/site/python2.7 failed with error code 1 in /home/espears/.virtualenvs/local-dev/build/mpi4py
Traceback (most recent call last):
File "/home/espears/.virtualenvs/local-dev/bin/pip", line 11, in <module>
sys.exit(main())
File "/home/espears/.virtualenvs/local-dev/local/lib/python2.7/site-packages/pip/__init__.py", line 185, in main
return command.main(cmd_args)
File "/home/espears/.virtualenvs/local-dev/local/lib/python2.7/site-packages/pip/basecommand.py", line 161, in main
text = '\n'.join(complete_log)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 31: ordinal not in range(128)
لكن, which mpicc
يعطي النتيجة المتوقعة: /usr/bin/mpicc
وكما ذكر أعلاه ، إذا كنت تستخدم هذا mpicc
لتجميع بسيط .ج برامج الاختبار ، وأنها تعمل بشكل جيد.
لقد رأيت بعض الروابط التي تصف خيار العلم fPIC
لتجميع مبي ، ولكن ، أنا مجرد استخدام أبت-جيت لتثبيت مبي وتريد على وجه التحديد الاعتماد فقط على حزم أوبونتو الأصلية لهذه الأدوات ، بدلا من الحفاظ على تعليمات التثبيت منفصلة لبناء يدويا لهم.
كيف يمكنني تحديد السبب mpicc
هو الفشل داخل mpi4py
عملية التثبيت?
وأضاف
يبدو أن ما يلي من إخراج وحدة التحكم هو أمر التجميع الذي يسبب المشكلة.
building 'mpi4py._mpi_swig' extension
/usr/bin/mpicc -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -fPIC -I/usr/include/python2.7 -c src/ext/mpi_swig.c -o build/temp.linux-x86_64-2.7/src/ext/mpi_swig.o
يعطي هذا الخطأ التالي عندما أحاول من سطر الأوامر بنفسي:
(local-dev)espears@espears-w:~$ /usr/bin/mpicc -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -fPIC -I/usr/include/python2.7 -c src/ext/mpi_swig.c -o build/temp.linux-x86_64-2.7/src/ext/mpi_swig.o
gcc: error: src/ext/mpi_swig.c: No such file or directory
gcc: fatal error: no input files
compilation terminated.
المحلول
وكنت قادرا على العمل بنجاح حول هذا مع أي تغييرات على أي شيء في نظام بلدي ببساطة عن طريق الإشارة نقطة في عنوان ورل حزمة مبي 4بي ، بدلا من اسم الحزمة:
pip install https://bitbucket.org/mpi4py/mpi4py/downloads/mpi4py-1.3.1.tar.gz
نصائح أخرى
وقد واجهت مشكلة مماثلة على أوبونتو 18.04 مع أوبنمبي-4.0.0.حلها عن طريق تثبيت الإصدار الأقدم من أوبنمبي-2.1.6.
apt-get install openmpi=2.1.6