Posts Tagged ‘python’

كيف تستخدم virtualenv

Posted: أبريل 26, 2013 in General
الوسوم:,

 

لتجربة أفضل في القراءة فضلا تابع الموضوع هنا

http://arabteam2000-forum.com/index.php/topic/277534-%D9%83%D9%8A%D9%81-%D8%AA%D9%86%D8%B4%D8%A6-%D8%A8%D9%8A%D8%A6%D8%A7%D8%AA-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D9%85%D8%B9%D8%B2%D9%88%D9%84%D8%A9-%D9%84%D9%85%D8%B4%D8%B1%D9%88%D8%B9%D9%83-%D8%B9%D8%A8%D8%B1-virtualenv/

 

كتبت مشروع ب Django 1.0 وسارت الأمور جيدا ولكن أحببت أن تكتب مشروع آخر ب Django 1.5 ويوجد تغييرات كثيرة ، فقد تقوم بعمل عدة أشياء تعتمد على إصدارات مختلفة من نفس الحزمة وهنا تحدث المشكلة. كيف يمكن تنصيب Django 1.0 و Django 1.5 في نفس الوقت ؟
أو حتى غير متاح لك عبر الصلاحيات إضافة حزم على مستوى النظام ؟

system-wide installation
المقصود بها هو التنصيب لتصبح مع المكتبات المعلومة على مستوى النظام ، ستجدها على سبيل المثال في مسار مثل
/usr/lib64/python/site-packages
وهذا مايتم فعله عندما تستخدم easy_install او pip

كالعادة يوجد لدينا حل ذكي وهو virtualenv وهي آداة تقوم بإنشاء بيئات مستقلة قائمة بذاتها لبايثون

أذهب الآن إلى سطر الأوامر وقم بتنفيذ

easy_install virtualenv
easy_install pip

الآن بعض العمل

<br />[striky@localhost mywspace]$ virtualenv sniply<br />New python executable in sniply/bin/python<br />Installing setuptools............done.<br />Installing pip...............done.<br />[striky@localhost mywspace]$ cd sn<br />snapboard-read-only/ sniply/ <br />[striky@localhost mywspace]$ cd sniply/</p><p>

قمنا بإنشاء بيئة عمل جديدة بإسم sniply -المفترض إسم مشروع مشابه ل gist ويقوم بتصغير الرابط كذلك- عبر الأمر virtualenv
لاحظ وجود setuptools إفتراضيا إذا أردت أن تستخدم distribute فقم بتمرير معامل –distribute للأمر virtualenv او قم بتعريف متغير
$export VIRTUALENV_DISTRIBUTE=true

فلنظر لهيكلية البيئة التي تم إنشائها

<br />[striky@localhost sniply]$ tree .<br />.<br />├── bin<br />│   ├── activate<br />│   ├── activate.csh<br />│   ├── activate.fish<br />│   ├── activate_this.py<br />│   ├── easy_install<br />│   ├── easy_install-2.7<br />│   ├── pip<br />│   ├── pip-2.7<br />│   └── python<br />├── include<br />│   └── python2.7 -&gt; /usr/include/python2.7<br />├── lib<br />│   └── python2.7<br />│   ├── _abcoll.py -&gt; /usr/lib64/python2.7/_abcoll.py<br />│   ├── _abcoll.pyc<br />│   ├── abc.py -&gt; /usr/lib64/python2.7/abc.py<br />│   ├── abc.pyc<br />│   ├── codecs.py -&gt; /usr/lib64/python2.7/codecs.py<br />│   ├── codecs.pyc<br />│   ├── config -&gt; /usr/lib64/python2.7/config<br />│   ├── copy_reg.py -&gt; /usr/lib64/python2.7/copy_reg.py<br />│   ├── copy_reg.pyc<br />│   ├── distutils<br />│   │   ├── distutils.cfg<br />│   │   ├── __init__.py<br />│   │   └── __init__.pyc<br />│   ├── encodings -&gt; /usr/lib64/python2.7/encodings<br />│   ├── fnmatch.py -&gt; /usr/lib64/python2.7/fnmatch.py<br />│   ├── fnmatch.pyc<br />│   ├── genericpath.py -&gt; /usr/lib64/python2.7/genericpath.py<br />│   ├── genericpath.pyc<br />│   ├── lib-dynload -&gt; /usr/lib64/python2.7/lib-dynload<br />│   ├── linecache.py -&gt; /usr/lib64/python2.7/linecache.py<br />│   ├── linecache.pyc<br />│   ├── locale.py -&gt; /usr/lib64/python2.7/locale.py<br />│   ├── no-global-site-packages.txt<br />│   ├── ntpath.py -&gt; /usr/lib64/python2.7/ntpath.py<br />│   ├── orig-prefix.txt<br />│   ├── os.py -&gt; /usr/lib64/python2.7/os.py<br />│   ├── os.pyc<br />│   ├── posixpath.py -&gt; /usr/lib64/python2.7/posixpath.py<br />│   ├── posixpath.pyc<br />│   ├── re.py -&gt; /usr/lib64/python2.7/re.py<br />│   ├── re.pyc<br />│   ├── site-packages<br />│   │   ├── easy-install.pth<br />│   │   ├── pip-1.2.1-py2.7.egg<br />│   │   │   ├── EGG-INFO<br />│   │   │   │   ├── dependency_links.txt<br />│   │   │   │   ├── entry_points.txt<br />│   │   │   │   ├── not-zip-safe<br />│   │   │   │   ├── PKG-INFO<br />│   │   │   │   ├── SOURCES.txt<br />│   │   │   │   └── top_level.txt<br />│   │   │   └── pip<br />│   │   │   ├── backwardcompat.py<br />│   │   │   ├── backwardcompat.pyc<br />│   │   │   ├── basecommand.py<br />│   │   │   ├── basecommand.pyc<br />│   │   │   ├── baseparser.py<br />│   │   │   ├── baseparser.pyc<br />│   │   │   ├── commands<br />│   │   │   │   ├── bundle.py<br />│   │   │   │   ├── bundle.pyc<br />│   │   │   │   ├── completion.py<br />│   │   │   │   ├── completion.pyc<br />│   │   │   │   ├── freeze.py<br />│   │   │   │   ├── freeze.pyc<br />│   │   │   │   ├── help.py<br />│   │   │   │   ├── help.pyc<br />│   │   │   │   ├── __init__.py<br />│   │   │   │   ├── __init__.pyc<br />│   │   │   │   ├── install.py<br />│   │   │   │   ├── install.pyc<br />│   │   │   │   ├── search.py<br />│   │   │   │   ├── search.pyc<br />│   │   │   │   ├── uninstall.py<br />│   │   │   │   ├── uninstall.pyc<br />│   │   │   │   ├── unzip.py<br />│   │   │   │   ├── unzip.pyc<br />│   │   │   │   ├── zip.py<br />│   │   │   │   └── zip.pyc<br />│   │   │   ├── download.py<br />│   │   │   ├── download.pyc<br />│   │   │   ├── exceptions.py<br />│   │   │   ├── exceptions.pyc<br />│   │   │   ├── index.py<br />│   │   │   ├── index.pyc<br />│   │   │   ├── __init__.py<br />│   │   │   ├── __init__.pyc<br />│   │   │   ├── locations.py<br />│   │   │   ├── locations.pyc<br />│   │   │   ├── log.py<br />│   │   │   ├── log.pyc<br />│   │   │   ├── __main__.py<br />│   │   │   ├── __main__.pyc<br />│   │   │   ├── req.py<br />│   │   │   ├── req.pyc<br />│   │   │   ├── runner.py<br />│   │   │   ├── runner.pyc<br />│   │   │   ├── status_codes.py<br />│   │   │   ├── status_codes.pyc<br />│   │   │   ├── util.py<br />│   │   │   ├── util.pyc<br />│   │   │   └── vcs<br />│   │   │   ├── bazaar.py<br />│   │   │   ├── bazaar.pyc<br />│   │   │   ├── git.py<br />│   │   │   ├── git.pyc<br />│   │   │   ├── __init__.py<br />│   │   │   ├── __init__.pyc<br />│   │   │   ├── mercurial.py<br />│   │   │   ├── mercurial.pyc<br />│   │   │   ├── subversion.py<br />│   │   │   └── subversion.pyc<br />│   │   ├── setuptools-0.6c11-py2.7.egg<br />│   │   └── setuptools.pth<br />│   ├── site.py<br />│   ├── site.pyc<br />│   ├── sre_compile.py -&gt; /usr/lib64/python2.7/sre_compile.py<br />│   ├── sre_compile.pyc<br />│   ├── sre_constants.py -&gt; /usr/lib64/python2.7/sre_constants.py<br />│   ├── sre_constants.pyc<br />│   ├── sre_parse.py -&gt; /usr/lib64/python2.7/sre_parse.py<br />│   ├── sre_parse.pyc<br />│   ├── sre.py -&gt; /usr/lib64/python2.7/sre.py<br />│   ├── stat.py -&gt; /usr/lib64/python2.7/stat.py<br />│   ├── stat.pyc<br />│   ├── types.py -&gt; /usr/lib64/python2.7/types.py<br />│   ├── types.pyc<br />│   ├── UserDict.py -&gt; /usr/lib64/python2.7/UserDict.py<br />│   ├── UserDict.pyc<br />│   ├── warnings.py -&gt; /usr/lib64/python2.7/warnings.py<br />│   ├── warnings.pyc<br />│   ├── _weakrefset.py -&gt; /usr/lib64/python2.7/_weakrefset.py<br />│   └── _weakrefset.pyc<br />└── lib64 -&gt; ./lib</p><p>16 directories, 122 files</p><p>

الآن ماذا ؟
كما ترى في مجلد bin يوجد عدة ملفات تنفيذية مثل activate, easy_install, pip, python
فكما خمنت قم بتفعيل تلك البيئة الإفتراضية المعزولة عبر activate

<br />[striky@localhost sniply]$ source bin/activate<br />(sniply)[striky@localhost sniply]$</p><p>

لاحظ هنا وجود كلمة (sinply) اما مؤشر المستخدم لتشير إلى أنك داخل البيئة الإفتراضية sniply

للخرو ج من بيئة sniply بكل بساطة إستدعي الأمر deactivate

<br />(sniply)[striky@localhost sniply]$ deactivate <br />[striky@localhost sniply]$</p><p>

قم بتنصيب ماتشاء

<br />(sniply)[striky@localhost sniply]$ pip install flask<br />

مثلا سأقوم بتنصيب flask لكون النسخة التي تم تنصيبها على النظام قديمة قليلا

الناتج

<br />(sniply)[striky@localhost sniply]$ ls lib64/python2.7/site-packages/<br />easy-install.pth pip-1.2.1-py2.7.egg<br />flask setuptools-0.6c11-py2.7.egg<br />Flask-0.9-py2.7.egg-info setuptools.pth<br />jinja2 werkzeug<br />Jinja2-2.6-py2.7.egg-info Werkzeug-0.8.3-py2.7.egg-info</p><p>

لاحظ أن تم تنصيب flask و الحزم المتعلقة بها على مستوى بيئة sniply وليست على مستوى النظام
لنا لقاء آخر عن virtualenvwrapper

http://www.virtualenv.org/en/latest/

Rockstar’s Guide to RE

Posted: ديسمبر 7, 2010 in General
الوسوم:,

توفر عندي بعض الوقت وبناء على طلب الجماهير:] دروس عن التعبيرات المنتظمة فى بايثون

http://programming-fr34ks.net/smf/index.php/topic,304

 

 

PythonGuide

Posted: نوفمبر 21, 2010 in General
الوسوم:, ,

حدثو الروابط ل http://www.programming-fr34ks.net/wiki/index.php/PythonGuide

تحديثات لكتاب البايثون

Posted: يونيو 3, 2009 in General
الوسوم:, ,

بعد بعض التفكير قررت اضافة التالى للكتاب

1-SWIG

2-ctypes -FFL- (done)

3-pyinotify (done)

4-functional python -functools, itertools- (done)

5-SQLAlchemy

6-Regex

وتم اضافة اجزاء للتوضيحات مع بعض الأجزاء الغامضة

اضافة جزئية عن ال generators, iterators

وجزئية لإيضاح الفرق بين str, repr

حمل ملفات ال odt, pdf من هنا

http://programming-fr34ks.net/strikytutorials/drafts/pfpybook2/

مطلوب:

مصمم

واى حد يحب يكمل الأجزاء الناقصة ياريت يكتبها ويبعتهالى اراجعها

http://programming-fr34ks.net/wiki/index.php/PythonGuide

Django Apps

Posted: مايو 31, 2009 in General
الوسوم:, , , , , ,

ازيكم ؟ لقيت كام ساعة فاضيين فعملت التطبيقات التالية بإستخدام django بتشمل

1- pastebin

لمشاركة الأكواد وفيه هتعرف ازاى تستخدم serving static media
ازاى تستخدم google-code-prettifyبدل من تصديع دماغك ب pygments-
وازاى تستخدم django-tagging

2- djnote
مشابه لموقع ملاحظة لمشاركة الملاحظات والرسائل القصيرة بصورة امنة
http://molahza.com/

3-pyurl

لعمل عناوين مصغرة مثل tinyurl مثلا

تنبيه: ولاواحد منهم بيشمل contrib.auth لأنها ليها تطبيق تانى ان شاء الله

تقدر تحملهم من
http://bitbucket.org/xmonader/djapps/

ان شاء الله دول هستخدمهم فى شرح دروس django للمبتدأين

**سورى لو فى اجزاء من ال templates او فى ملف ال css متكررة ومش تنسو تدعولى فى الإمتحانات 🙂

النهاردة على الفجر كنت قاعد بذاكر وجت فى دماغى شوية افكار عملتها ل helloED منها

1- اضافة pyconsole فى المنطقة السفلية – ايه رأيكم فى اضافة لروبى ؟

2- اضافة scribble widget مشابة للموجود فىgeany

3- اضافة ديالوج jumpto (سواء لملف محتاج اعدل ال entry بإنها تكون مكملة للمساراتاو سطر)

4- اضافة ديالوج wc (ليقوم بنفس عمل wc من سطور وكلمات وحروف)

لسه هيكون فى اضافة مجموعة من الرخص لإضافتها للهيدر زى GPL v3

بإذن الله هحاول اظبط ال vi emulation بعد امتحاناتى

اذا فى احد من مستخدمى textmate وعنده خبرة بايثونية ياريت يراسلنى

بعد تفكير عميق وحوار مريب وكدا يعنى قررت انى الغى فكرة الtabs –هخليها مشابهة للموجودة ب IDLE بإنه يفتح الملف فى نافذة جديدة

مش هيتم التكامل مع dbus او pyinotify بسبب انى عايزه يكون portable على قد ماقدر وإلا هضطر اكتب كود لويندوز او ربما موديلز اضافية ولا ايه رأيكم ؟

اذا فى حد عنده خبرة كويسة ب vte ياريت يراسلنى عشان الترمنال ويدجت done!

دلوقتى عايز اسأل سؤال مين بيستخدم الإكمال التلقائى ؟ هل فى حاجة لل templates ؟

هبدأ فى ال snippets ان شاء الله بعد الإمتحانات

wish me luck

helloED

Posted: مايو 9, 2009 in General
الوسوم:, , , ,

انهيت تكست اديتور كبديل ل gEdit فى المستقبل حاليا هو بيدعم تصفح الملفات من خلال ويدجت FileBrowser وبيدعم اكواد 70 لغة اعتمادا على gtksourceview2- تضم بايثون وروبى وهاسكل وسى وجافا وباسكال

بيحوى gregextoolkit –مازالت محتاجه واجهة ل regexlib.com

بعض الأفكار فى عملية ال search/replace اعتمدت عليها من سورس geany و برنامج Edile


#TODO

1- تدعيم ال tabs

2- تكامل مع vte (هل فعلا محتاجينه؟ لأن دايما الواحد بيكون فاتح الترمنال؟)

3- dbus

4- دعم السحب والإلقاء

5- دعم ال snippets

6- محاكاه ل vim

7- تحليل النص لبايثون

للتحميل

http://programming-fr34ks.net/pfsoft/helloed/helloed3.tar.gz