متن خبر

نحوه نصب پایتون در مک

نحوه نصب پایتون در مک

شناسهٔ خبر: 470301 -




پایتون محبوب ترین زبان اول برای برنامه نویسان در مک است.

تا همین اواخر، فقدان ابزار توسعه استاندارد زبان، به علاوه ابزارهای توسعه اختیاری-اما ضروری رقابتی، به معنای شروعی دشوار برای مبتدیان پایتون بود.

برای رفع سردرگمی، یک رویکرد به روز برای نصب پایتون و راه اندازی یک پروژه برنامه نویسی با استفاده از یک ابزار واحد به نام Rye برای نصب نسخه های پایتون و کتابخانه های نرم افزاری به شما نشان خواهم داد.

Rye یک ابزار مدیریت پروژه همه‌جانبه برای پایتون است که به زبان Rust (برای سرعت) نوشته شده و از Cargo، مدیر بسته جامع Rust، از آرمین روناچر، خالق چارچوب وب پایتون، الهام گرفته شده است. این برای مبتدیان ایده‌آل است و رویکردی مبتنی بر پوشه برای توسعه از زبان‌های دیگر مانند جاوا اسکریپت و روبی قرض می‌گیرند.

فهرست

شما می خواهید URL این راهنما را برای مراجعات بعدی ذخیره کنید. آنچه در اینجا پوشش داده شده است:

قبل از شروع

نصب پایتون با چاودار
- وجود پایتون را تحلیل کنید
- چاودار را نصب کنید
- PATH را برای چاودار تنظیم کنید
-نصب چاودار را تأیید کنید
- تأیید نصب پایتون

مدیریت نسخه و بسته با چاودار
- یک پروژه با Rye ایجاد کنید
- یک نسخه تنظیم کنید
- اضافه کردن بسته ها
- برای راه اندازی پروژه همگام سازی کنید
- پایتون را اجرا کنید

گردش کار پایتون با چاودار

نتیجه

قبل از شروع

شما به یک برنامه ترمینال نیاز دارید، یا Mac Terminal یا جایگزینی مانند Warp Terminal (ابزاری که من آن را "سریعترین راه برای تبدیل شدن به یک کاربر قدرتمند خط فرمان" می نامم).

قبل از شروع، تحلیل کنید که آیا باید macOS را به‌روزرسانی کنید .

شاید شنیده باشید که پایتون روی مک شما از قبل نصب شده است. مک های قدیمی (قبل از macOS 12.3) با Python 2.7 عرضه شدند. این یک نسخه قدیمی تر است، نه پایتون 3 که شما نیاز دارید. مک های جدیدتر با پایتون از پیش نصب شده عرضه نمی شوند.

قبل از شروع برنامه نویسی در مک، باید Xcode Command Line Tools را نصب کنید. قبل از ادامه کار، باید تحلیل کنید که آیا Xcode Command Line Tools نصب شده است یا خیر. هنگامی که Xcode Command Line Tools را نصب می کنید، اپل پایتون 3.9.6 را نیز شامل می شود. ممکن است وسوسه شوید که از آن استفاده کنید، اما این یک نسخه قدیمی است که فقط برای نرم افزار سیستم در نظر گرفته شده است، به همین دلیل است که باید نسخه جدیدی از Python را نصب کنید، همانطور که در اینجا نشان داده شده است.

نصب پایتون با چاودار

راه های مختلفی برای راه اندازی مک پایتون وجود دارد. در اینجا گزینه های شما، به طور خلاصه، با یک نقد وجود دارد.

در وب سایت Python.org ، یک برنامه نصب کننده برای جدیدترین نسخه پایتون وجود دارد. اکثر توسعه دهندگان پایتون از استفاده از آن اجتناب می کنند زیرا مک را به روش هایی که مدیریت آن دشوار است به هم می ریزد.

اگر Homebrew را برای توسعه نرم‌افزار نصب می‌کنید ، به راحتی می‌توانید python را نصب کنید. با این حال، پایتون نصب شده توسط Homebrew برای مدیریت چندین پروژه پایتون مناسب نیست و توسعه می‌تواند دشوار باشد.

برخی از آموزش‌ها نصب Pyenv ، یک مدیر نسخه پایتون را پیشنهاد می‌کنند. Pyenv انتخاب خوبی برای مدیریت چندین نسخه پایتون است، اما نیاز به آشنایی با Pip ، یک مدیر بسته، و Venv یا Virtualenv ، مدیران محیطی دارد. ابزارهای متعدد توسعه را پیچیده تر می کند.

توصیه می کنم پایتون را با چاودار نصب کنید. با این ابزار همه کاره، چندین نسخه پایتون را مدیریت می‌کنید، محیط‌های مبتنی بر پروژه را راه‌اندازی می‌کنید و بسته‌های پایتون را بدون تداخل وابستگی نصب می‌کنید. من به شما نشان خواهم داد که چگونه پایتون را با استفاده از Rye، راه آسان، با یک اسکریپت خودنصب نصب کنید.

پایتون را تحلیل کنید

بهتر است بدون نسخه قبلی پایتون نصب شده شروع کنید، به جز نسخه پایتون که توسط Xcode Command Line Tools نصب شده است.

برای تحلیل اینکه آیا پایتون با ابزارهای خط فرمان Xcode نصب شده است، python3 --version و which -a python3 امتحان کنید:

 $ python3 --version Python 3.9.6 $ which -a python3 /usr/bin/python3

شما از پایتون نصب شده توسط Xcode Command Line Tools استفاده نخواهید کرد، اما مهم است که بدانید Xcode Command Line Tools از قبل وجود دارد. در غیر این صورت، Xcode Command Line Tools را نصب کنید .

تحلیل کنید که آیا نسخه دیگری از پایتون قبلاً نصب شده است یا خیر:

 $ python --version zsh: command not found: python

zsh: command not found: python خواهید دید اگر پایتون در دسترس نباشد. من در جای دیگری درباره نحوه به‌روزرسانی پایتون نوشته‌ام اگر فکر می‌کنید از قبل پایتون دارید، و همچنین راهنمای رفع خطای « commann not found: python » اگر مطمئن هستید پایتون نصب شده است اما در دسترس نیست، نوشته‌ام.

اگر بیش از یک نسخه از پایتون را نصب کرده اید، مشکلی نیست زیرا پس از نصب Rye ، مسیر Mac را تنظیم می کنید تا نسخه صحیح پایتون در دسترس باشد.

Ry را نصب کنید

Homebrew مورد نیاز نیست. Rye یک اسکریپت خود نصب دارد، پس می توانید Rye را با دستور curl نصب کنید.

 $ curl -sSf https://rye-up.com/get | bash

Curl یک ابزار خط فرمان است که درخواست‌های HTTP را از ترمینال ایجاد می‌کند و برای کارهایی مانند دانلود و اجرای اسکریپت‌های نصب مفید است.

 $ curl -sSf https://rye-up.com/get | bash This script will automatically download and install rye (latest) for you. ####################################################################### 100.0% Welcome to Rye! This installer will install rye to /Users/username/.rye This path can be changed by exporting the RYE_HOME environment variable. Details: Rye Version: 0.26.0 Platform: macos (aarch64) ? Continue? (y/n)

برای ادامه y وارد کنید. Rye برای سفارشی کردن نصب سؤالاتی می پرسد.

 ? Select the preferred package installer › ❯ uv (fast, recommended) pip-tools (slow, higher compatibility)

به‌طور پیش‌فرض، Rye uv را ارائه می‌کند، یک نصب کننده بسته سریع‌تر و جدیدتر. من توصیه می کنم pip-tools برای سازگاری انتخاب کنید. اگر مبتدی هستید، دنبال کردن آموزش هایی که به pip اشاره می کنند آسان تر خواهد بود. pip-tools با کلیدهای جهت دار انتخاب کنید.

سپس، خود نصب‌کننده می‌پرسد از کدام نسخه پایتون به‌عنوان پیش‌فرض استفاده می‌کنید، و نسخه نصب‌شده Rye یا نسخه‌های نصب‌شده قبلی را ارائه می‌دهد.

 ? What should running `python` or `python3` do when you are not inside a Rye managed project? › ❯ Run a Python installed and managed by Rye Run the old default Python (provided by your OS, pyenv, etc.)

بهتر است از نسخه نصب شده Rye استفاده کنید. Run a Python installed and managed by Rye با فشار دادن "Enter" بپذیرید. سپس خود نصب کننده می پرسد کدام نسخه پایتون را به عنوان پیش فرض نصب کند.

 ? Which version of Python should be used as default toolchain? (cpython@3.12) ›

پیش فرض را بپذیرید و Rye آخرین نسخه پایتون را نصب خواهد کرد. نصب با فشار دادن "Enter" شروع می شود.

 Installed binary to /Users/username/.rye/shims/rye Bootstrapping rye internals Downloading cpython@3.12.1 Checking checksum Unpacking Downloaded cpython@3.12.1 Updated self-python installation at /Users/username/.rye/self The rye directory /Users/username/.rye/shims was not detected on PATH. It is highly recommended that you add it. ? Should the installer add Rye to PATH via .profile? (y/n) ›

توجه داشته باشید که Rye فایل های پایتون خود را در ~/.rye/shims/rye نصب می کند.

Rye پیشنهاد می‌کند که $PATH برای اولویت دادن به نسخه پایتون خود با تغییر فایل .profile تنظیم کند.

استفاده از فایل .profile یک قرارداد لینوکس است. در Mac، ترجیحاً $PATH در فایل‌های .zprofile یا .zshrc ، ترجیحاً .zprofile . تنظیم کنید. برای رد شدن از این مرحله خودکار، n را وارد کنید. بعداً، $PATH به صورت دستی تنظیم خواهید کرد.

 ✔ Should the installer add Rye to PATH via .profile? · no note: did not manipulate the path. To make it work, add this to your .profile manually: source "$HOME/.rye/env" To make it work with zsh, you might need to add this to your .zprofile: source "$HOME/.rye/env" For more information read https://rye-up.com/guide/installation/ All done!

Rye نحوه تکمیل نصب را به صورت دستی با ویرایش فایل .zprofile توضیح می دهد. من به شما نشان خواهم داد که چگونه این کار را انجام دهید.

PATH را برای چاودار تنظیم کنید

قبل از اینکه چاودار به درستی کار کند، آخرین مرحله مهم وجود دارد. شما باید مسیر Mac را تنظیم کنید تا مطمئن شوید که Rye نسخه صحیح پایتون را پیدا می کند. در غیر این صورت، وارد کردن دستور python zsh: command not found: python و دستور python3 به نسخه قدیمی پایتون نصب شده با Xcode دسترسی پیدا می کند.

فایل ~/.zprofile را ویرایش کنید. فایل ~/.zprofile برای تنظیم $PATH استفاده می شود. همچنین، می‌توانید فایل ~/.zshrc را تغییر دهید (برای توضیح تفاوت‌ها به فایل‌های پیکربندی Zsh چگونه کار می‌کنند؟ مراجعه کنید). می‌توانید از TextEdit، ویرایشگر متن گرافیکی پیش‌فرض macOS، برای باز کردن یک فایل از ترمینال استفاده کنید:

 $ open -e ~/.zprofile

همچنین می توانید از ویرایشگرهای خط فرمان nano یا vim برای ویرایش فایل های پیکربندی پوسته استفاده کنید. برای اطلاعات بیشتر در مورد ویرایش فایل های پیکربندی پوسته، به پیکربندی پوسته Zsh مراجعه کنید.

این دستور را به عنوان آخرین خط فایل پیکربندی خود برای پیکربندی پوسته Z برای Rye اضافه کنید:

 source "$HOME/.rye/env"

هنگامی که جلسه ترمینال شما شروع می شود، پوسته Z اسکریپت ~/.rye/env را اجرا می کند تا shims را برای رهگیری و تغییر مسیر هر دستور پایتون تنظیم کند. شما به نقل قول های دوتایی نیاز دارید زیرا دستور حاوی کاراکترهای خاصی است.

Rye شیم ها را به $PATH شما اضافه می کند تا با اجرای دستور python یا python3 یک نسخه Python نصب شده توسط Rye اجرا شود.

تغییرات در فایل ~/.zprofile تا زمانی که ترمینال را ترک و راه اندازی مجدد نکنید، در ترمینال اعمال نمی شود. از طرف دیگر (این ساده تر است)، می توانید از دستور source برای تنظیم مجدد محیط پوسته استفاده کنید:

 $ source ~/.zprofile

دستور source یک فایل اسکریپت پوسته را می خواند و اجرا می کند، در این مورد محیط پوسته را با تنظیمات $PATH جدید شما بازنشانی می کند.

پس از تنظیم مجدد پوسته، می توانید تنظیمات $PATH تحلیل کنید.

 $ echo $PATH /Users/username/.rye/shims:/opt/homebrew/bin:/opt/homebrew/sbin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin

دایرکتوری ~/.rye/shims باید در سمت چپ باشد و بر سایر دایرکتوری ها اولویت داشته باشد.

نصب Rye را تأیید کنید

پس از نصب Rye، از rye --version برای تحلیل نصب بودن آن استفاده کنید.

 $ rye --version rye 0.26.0 commit: 0.26.0 (d245f625e 2024-02-23) platform: macos (aarch64) self-python: cpython@3.12 symlink support: true uv enabled: false

تایید نصب پایتون

تحلیل کنید که پایتون در دسترس است:

 $ python --version Python 3.12.1

آری شما پایتون را نصب کرده اید. اگر zsh: command not found: python مشاهده کردید، تحلیل کنید که Mac PATH به درستی تنظیم شده باشد.

دستور python3 باید نسخه نصب شده توسط Rye را به شما بدهد، نه نسخه نصب شده توسط Xcode.

 $ python3 --version Python 3.12.1

هنگامی که می‌خواهید ببینید پایتون کجا نصب شده است، دستور which دایرکتوری Rye shims را نشان می‌دهد. به خاطر داشته باشید که فایل ~/.zprofile را به گونه ای تنظیم کرده اید که از Rye shims برای رهگیری فرمان python و ارائه نسخه های نصب شده توسط Rye استفاده کند.

 $ which python /Users/username/.rye/shims/python

شما پایتون را با Rye با موفقیت نصب کردید.

مدیریت نسخه و بسته با چاودار

می توانید از چاودار برای موارد زیر استفاده کنید:

    یک پروژه پایتون راه اندازی کنید.

    یک نسخه پایتون خاص را برای یک پروژه نصب کنید.

    بسته های پایتون را برای پروژه نصب کنید.

زبان‌های دیگر رویکردی مبتنی بر پروژه را برای مدیریت بسته‌ها اتخاذ می‌کنند (به عنوان مثال، Rust's Cargo، Ruby's Bundler، و JavaScript's npm). پایتون در اتخاذ این رویکرد کند بوده است، اما Rye در حال تغییر آن است و نیاز به ابزارهای جداگانه مانند Pyenv، Pip و Venv برای مدیریت نسخه‌ها، کتابخانه‌های نرم‌افزار و محیط‌ها را از بین می‌برد.

با Rye، با ایجاد یک پروژه جدید و انتخاب نسخه پایتون شروع می‌کنید. سپس می توانید بسته هایی را برای آن پروژه نصب کنید. Rye نسخه و بسته های پایتون را برای شما مدیریت خواهد کرد.

یک پروژه با Rye ایجاد کنید

یک پوشه برای پروژه پایتون بسازید. سپس دایرکتوری ها را به ریشه پروژه تغییر دهید:

 $ mkdir myproject $ cd myproject

یک نسخه پایتون برای پروژه خود مشخص کنید:

 $ rye pin 3 pinned 3.12.1 in /Users/username/workspace/myproject/.python-version

دستور rye pin 3 یک فایل .python-version ایجاد می کند که جدیدترین نسخه Python را برای پروژه شما مشخص می کند.

برای ایجاد یک فایل pyproject.toml در دایرکتوری ریشه پروژه خود باید دستور rye init را اجرا کنید. این یک فایل پیکربندی خاص پروژه است که Rye برای مدیریت نسخه ها و بسته های پایتون استفاده می کند.

 $ rye init success: Initialized project in /Users/username/workspace/myproject/. Run `rye sync` to get started

اکنون می توانید نسخه پایتون را دریافت کرده و بسته ها را نصب کنید.

یک نسخه تنظیم کنید

Rye می تواند بین نسخه های مختلف پایتون نصب و جابجا شود.

Rye برای اشاره به نسخه های نصب شده پایتون از اصطلاح "Toolchains" استفاده می کند. برای نصب نسخه پایتون، می‌توانید با استفاده از Rye ، یک زنجیره ابزار واکشی کنید .

 $ rye fetch $

اگر پایتون پیش‌فرض را با rye pin مشخص کرده‌اید، rye fetch کاری انجام نمی‌دهد. اگر نسخه پایتون دیگری را مشخص کرده اید، rye fetch نسخه مشخص شده را نصب می کند.

 $ rye fetch Downloading cpython@3.12.1 Checking checksum success: Downloaded cpython@3.12.1

به‌طور پیش‌فرض، Rye همه فایل‌های اجرایی پایتون را در یک پوشه مخفی در فهرست اصلی کاربر شما نصب می‌کند ~/.rye/py/ . Rye shims در Mac $PATH نسخه صحیح Python را که در فهرست پروژه خود مشخص کرده اید انتخاب می کند.

بسته ها را اضافه کنید

مدیران بسته به شما امکان دانلود، نصب و به روز رسانی کتابخانه های نرم افزار و وابستگی های آنها را می دهند. اکثر بسته‌ها به کتابخانه‌های نرم‌افزار خارجی دیگر وابسته هستند—مدیر بسته هر وابستگی مورد نیاز آن بسته را واکشی و نصب می‌کند.

توسعه‌دهندگان باتجربه پایتون با Pip ، مدیر بسته استاندارد پایتون، که با هر نسخه‌ای از پایتون از زمان پایتون 3.3 همراه است، آشنا هستند.

دستور pip install بسته‌ها را به صورت جهانی در پایتون سیستم یا نسخه‌های پایتون مشترک نصب می‌کند و درگیری‌های احتمالی ایجاد می‌کند.

برای نصب ایمن بسته های پایتون برای یک پروژه خاص با pip ، باید از یک مدیر محیط پایتون مانند Venv برای ایجاد و فعال کردن یک محیط مجازی برای جلوگیری از تضاد وابستگی استفاده کنید.

وقتی از Rye به عنوان یک ابزار همه کاره استفاده می کنید، برای مدیریت محیط نیازی به venv نخواهید داشت و بسته ها را مستقیماً با Rye نصب می کنید.

قبل از اینکه بخواهید یک بسته را با Rye نصب کنید، مطمئن شوید که یک فایل pyproject.toml در فهرست اصلی پروژه خود با rye init ایجاد کرده اید.

شما می توانید هر بسته پایتون را از فهرست بسته پایتون نصب کنید. در اینجا ما ابزار cowsay را نصب می کنیم.

 $ rye add cowsay Added cowsay>=6.1 as regular dependency

اگر error: did not find pyproject.toml ، باید rye init را اجرا کنید.

برای راه اندازی پروژه همگام سازی کنید

قبل از اینکه بتوانید از یک بسته در پروژه Rye استفاده کنید، باید rye sync برای به‌روزرسانی فایل‌های قفل و نصب وابستگی‌ها در محیط مجازی اجرا کنید.

 $ rye sync Initializing new virtualenv in /Users/username/workspace/python/myproject/.venv Python version: cpython@3.12.3 Generating production lockfile: /Users/username/workspace/python/myproject/requirements.lock Creating virtualenv for pip-tools Generating dev lockfile: /Users/username/workspace/python/myproject/requirements-dev.lock Installing dependencies Looking in indexes: https://pypi.org/simple/ Obtaining file:///. (from -r /var/folders/ls/g23m524x5jbg401p12rctz7m0000gn/T/tmp06o05xiq (line 2)) Installing build dependencies ... done Checking if build backend supports build_editable ... done Getting requirements to build editable ... done Installing backend dependencies ... done Preparing editable metadata (pyproject.toml) ... done Collecting cowsay==6.1 (from -r /var/folders/ls/g23m524x5jbg401p12rctz7m0000gn/T/tmp06o05xiq (line 1)) Using cached cowsay-6.1-py3-none-any.whl.metadata (5.6 kB) Using cached cowsay-6.1-py3-none-any.whl (25 kB) Building wheels for collected packages: myproject Building editable for myproject (pyproject.toml) ... done Created wheel for myproject: filename=myproject-0.1.0-py3-none-any.whl size=1074 sha256=0b34a41cbb517a78e5b60593c75e93a37df0bf7958e8921be5f6f6e24a26b5d1 Stored in directory: /private/var/folders/ls/g23m524x5jbg401p12rctz7m0000gn/T/pip-ephem-wheel-cache-m03jgkok/wheels/8b/19/c8/73a63a20645e0f1ed9aae9dd5d459f0f7ad2332bb27cba6c0f Successfully built myproject Installing collected packages: myproject, cowsay Successfully installed cowsay-6.1 myproject-0.1.0 Done!

Rye تمام عملیات خود را نشان می دهد، اما لازم نیست تمام جزئیات را بخوانید.

پایتون را اجرا کنید

پس از نصب بسته و اجرای rye sync ، می‌توانید از مفسر پایتون به صورت تعاملی (حلقه REPL یا Read-Eval-Print) استفاده کنید.

 $ python Python 3.12.1 (main, Jan 7 2024, 23:31:12) [Clang 16.0.3 ] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import cowsay >>> cowsay.cow('Hello World') ___________ | Hello World | =========== \ \ ^__^ (oo)\_______ (__)\ )\/\ ||----w | || || >>>

quit() را وارد کنید یا Control + D را تایپ کنید تا از مفسر پایتون خارج شوید.

اکنون شما آماده توسعه هر پروژه پایتون با Rye هستید! برای کسب اطلاعات بیشتر می توانید راهنمای کاربر چاودار را بخوانید.

گردش کار پایتون با چاودار

همانطور که در پایتون کد می نویسید، می خواهید کتابخانه های نرم افزاری را به پروژه خود اضافه کنید. بیایید به یک مثال نگاه کنیم.

Requests یک کتابخانه HTTP است که احتمالاً در بسیاری از پروژه ها از آن استفاده خواهید کرد. اگر از صفحه درخواست ها در PyPI بازدید کنید، دستورالعمل های نصب را مشاهده خواهید کرد:

 $ python -m pip install requests

دستور python -m pip کمی دست و پا گیر است و اگر از Pip استفاده می کنید، باید قبل از آن python -m venv .venv (برای راه اندازی یک محیط مجازی) و source .venv/bin/activate (برای فعال کردن یک مجازی) قرار دهید. محیط).

با Rye، می توانید درخواست ها را به فایل pyproject.toml خود اضافه کنید.

 $ rye add requests

سپس rye sync را برای نصب بسته اجرا کنید.

 $ rye sync

اکنون می توانید از کتابخانه Requests در پروژه پایتون خود، از جمله آن با یک دستور import استفاده کنید.

به یاد داشته باشید، هنگامی که pip install در یک آموزش مشاهده می‌کنید، می‌توانید به جای آن از rye add و rye sync بدون دستورات اضافی برای یک محیط مجازی استفاده کنید.

مبتدیانی که از نصب پیپ استفاده می کنند اغلب با سردردهایی مواجه می شوند که دستور پیدا نشد: پیپ و خطا: محیط مدیریت شده خارجی . چاودار این مشکلات را برطرف می کند.

نتیجه

این مقاله بر اساس راهنمایی است که جزئیات بیشتری در مورد نحوه نصب پایتون در مک ارائه می دهد.

Rye مورد علاقه جدید برای نصب و مدیریت پایتون است زیرا یک سیستم بسته بندی و راه اندازی منسجم را ارائه می دهد و نیاز به ابزارهای جداگانه مانند Pyenv، Pip و Venv را برای مدیریت نسخه ها، کتابخانه های نرم افزار و محیط ها از بین می برد.

پایتون اولین زبان برنامه نویسی برای اکثر مبتدیان است. همانطور که محبوبیت آن برای یادگیری ماشین و علم داده افزایش می یابد، برای بسیاری از آموزش هایی که در freeCodeCamp خواهید یافت، پایتون را در مک خود می خواهید.

خبرکاو

ارسال نظر




تبليغات ايهنا تبليغات ايهنا

تمامی حقوق مادی و معنوی این سایت متعلق به خبرکاو است و استفاده از مطالب با ذکر منبع بلامانع است