کامپایلر مایکروسافت برای پایتون

30 Apr 2014

به نام خدا

مقدمه

اخیراً شروع به کار با زبان پایتون کردم. خیلی سبک زبان رو نپسندیدم، بخصوص با dynamic بودن هنوز کامل کنار نیامده‌ام. ولی زبان پایتون جامعه‌ی بسیار بزرگی دارد و نتیجه‌ی این جامعه‌ی بزرگ پروژه‌های باکیفیت و پرتعداد و پرکاربردی است که برای این زبان و با این زبان ایجاد شده‌اند. همین کتابخانه‌ها برنامه‌نویسی را برای انجام بسیاری از کارها آسان می‌کند.

برای نصب کتابخانه‌های مختلف برای این زبان، راه‌های مختلفی وجود دارد. مشهورترین این راه‌ها pip و easy_install است. همچنین با استفاده از conda نیز می‌توان این کار را برای بعضی از کتابخانه‌ها انجام داد.

ولی راه اصلی نصب بسیاری از کتابخانه‌ها، استفاده از دستور زیر است:

>> python setup.py install

فایل setup.py در همه‌ی پروژه‌ها وجود دارد، و در واقع این فایل توسط توسعه‌دهندگان هر کدام از این کتابخانه‌ها نوشته می‌شود. با استفاده از این دستور می‌توان کتابخانه‌ی مورد نظر را به لیست پایتون اضافه کرد.

پایتون به زبان C نوشته شده است و برای سرعت‌گرفتن، قسمت‌هایی از کد را می‌توان به زبان C نوشت و در کد پایتون استفاده کرد. همچنین پروژه‌ای همانند Cython می‌تواند کد پایتون را به کد C تبدیل کند.

مشکل

در هنگام نصب بعضی از پروژه‌ها، لازم است قسمتی از کد توسط یک کامپایلر C کامپایل شود. برای این کار باید پایتون بتواند کامپایلر درست نصب شده و تنظیمات مناسب را تشخیص دهد. اگر این مشکلی در این کار پیش بیاید، خطایی مانند زیر در هنگام نصب کتابخانه نمایش داده خواهد شد:

Error:unable to find vcvarsall.bat

این خطا بخصوص در ویندوز احتمال ظهور بیشتری دارد! برای اینکار راه‌حلی پیشنهاد می‌شود که در ادامه توضیح آن را خواهم داد.

راه‌حل

در مسیر زیر فایلی به نام distutils.cfg وجود دارد

%PYTHONDIR%\Lib\distutils\

اگر هم این فایل موجود نباشد، آن را ایجاد کنید. محتویات آن را به صورت زیر تغییر دهید:

[build]
compiler=msvc

%PYTHONDIR% مسیر نصب پایتون می‌باشد. مسیر پیش‌فرض مسیر زیر می‌باشد:

C:\Python27

تنظیمات بالا با فرض این است که کامپایلر مایکروسافت بر روی سیستم نصب باشد. اگر ویژوال استودیو داشته باشید کامپایلر نصب می‌باشد. اگر کامپایلر ویژوال استودیو ندارید می‌توانید نسخه‌ی Express ویژوال استودیو را دریافت و نصب کنید.

حال به مسیر زیر بروید:

%PYTHONDIR%\PCbuild\

در این پوشه فایل زیر را ایجاد کنید

msvcr<num>.def

که منظور از <num> یک شماره است که بر اساس نسخه‌ی ویژوال استودیو تعیین می‌شود

  • Visual Studio 2008 -> 90
  • Visual Studio 2010 -> 100
  • Visual Studio 2012 -> 110
  • Visual Studio 2013 -> 120

حال در فایل ایجاد شده دو خط زیر را بنویسید:

LIBRARY MSVCR<num>.dll
EXPORTS

با انجام این کارها به احتمال زیادی مشکل کامپایل‌شدن کدهای C برای پایتون حل خواهد شد.

comments powered by Disqus