برنامه نویسی پایتون در لینوکس دبیان در گوشی

saalek110

Well-Known Member
برنامه نویسی پایتون در لینوکس دبیان در گوشی


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

شرحی بر نصب لینوکس بر ترموکس


آموزش پایتون از پایه

 
آخرین ویرایش:

saalek110

Well-Known Member
در ابونتو و دبیان:

کد:
 apt update
 apt install python3
 apt install python3-pip  # برای نصب pip (مدیر بسته پایتون)

کد:
python3 --version
اگر عددی نشان داد ، یعنی پایتون نصب است.
 
آخرین ویرایش:

saalek110

Well-Known Member
کد:
python3

print("hello")
وقتی می نویسم python یعنی بدون ۳ ، خطا می دهد. باید بنویسیم python3

با نوشتن python3 ، اول خط سه تا علامت بزرگتر داریم که نشانه محیط پایتون است.
کد:
>>>exit
در کد بالا سه تا بزرگتر را وول خط نوشتم تا نشان بدهم محیط پایتون چطوری نمایش داده می شود و برای تروج از محیط پایتون دستور exit را نوشته ام.
 

saalek110

Well-Known Member
ساختن فایل:
لازم نیست حتما وارد محیط پایتون شویم...
میشه فایل بسازیم و کدهای پایتون را داخلش بریزیم.

در دستور زیر ، نانو برای ما یک فایل می سازد.
کد:
nano test.py

و بعد ساخت فایل ، بلافاصله وارد فایل می شویم و با تاچ کف ایدیتور ، کد را paste می کنیم.یا کد را تایپ می کنیم...و
با زدن کنترل x و سپس زدن y و سپس با رویت نام فایل در پایین برنامه ، اینتر می کنیم. تا فایل save شود و از فایل بیرون خواهی رفت.
کد:
python3 test.py

با دستور بالا برنامه را جرا می کنیم.
 

saalek110

Well-Known Member
در تاپیک آموزش پاتون از پایه-لینک در پست اول - کدنویسی کردیم و اینجا دنبال آموزش کدنویسی پایتون نیستم.

کد:
 apt install python3-pil
کد بالا ، نصب Pillow از طریق apt (نسخه Debian)
برای من نصب شد.

کد:
# در Debian با بسته python3-pil نام ماژول متفاوت است
try:
    # سعی کن از PIL که با apt نصب شده استفاده کن
    from PIL import Image, ImageDraw
except ImportError:
    # اگر پیدا نشد، از نسخه جایگزین استفاده کن
    import Image
    import ImageDraw
    print("توجه: از نسخه قدیمی PIL استفاده می‌شود")

# بقیه کد مثل قبل...
width, height = 500, 400
image = Image.new("RGB", (width, height), (230, 240, 255))
draw = ImageDraw.Draw(image)

# رسم مربع
draw.rectangle([(100, 100), (300, 300)],
               fill=(255, 50, 50),
               outline=(0, 0, 0),
               width=3)

image.save("my_drawing.png")
print("✅ تصویر ساخته شد: my_drawing.png")

بزنامه بالا را اجرا کردم. رفتم در قسمت گرافیکی ، عکس ساخته شده بود.
 
آخرین ویرایش:

saalek110

Well-Known Member
کد:
 apt install python3-venv

دستور بالا ، نصب venv است.

کد:
python3 -m venv ~/my_python_env

کد بالا ، ایجاد محیط مجازی است.
حالا می توانیم هر چیزی نصب کنیم.

کد:
root@localhost:~# source ~/my_python_env/bin/activate
(my_python_env) root@localhost:~#
کد بالا فعال سازی این محیط است ، توجه کنید اول خط نوشته (my_python_env)
نصب pillow در محیط مجازی، محیط عادی نصب نشد:

کد:
pip install Pillow

در پست بعدی ، برنامه ای ساختیم برای ساخت عکس.


کارتون د. این محیط تمام شد بنویسید :
کد:
deactivate
 
آخرین ویرایش:

saalek110

Well-Known Member
کد:
```python
from PIL import Image, ImageDraw

# تنظیمات
width, height = 500, 400
bg_color = (230, 240, 255)
square_color = (255, 50, 50)

# ایجاد تصویر
image = Image.new("RGB", (width, height), bg_color)
draw = ImageDraw.Draw(image)

# رسم مربع
draw.rectangle([(100, 100), (300, 300)],
               fill=square_color,
               outline=(0, 0, 0),
               width=5)

# ذخیره تصویر
image.save("my_art.png")
print("✅ تصویر با موفقیت ساخته شد: my_art.png")
print("✅ برای مشاهده: feh my_art.png")
```
کد بالا برنامه نمونه است که فایل عکسی را می سازد.
 
آخرین ویرایش:

saalek110

Well-Known Member
دستورات محیط مجازی:

Screenshot_۲۰۲۶-۰۲-۰۷_۱۹۱۴۲۹.jpg

کد:
pip list
Package Version
------- -------
pillow  12.1.0
pip     25.1.1
(my_python_env) root@localhost:~#

در بالا می بینید با لیست گیری میگه چی نصب شده.
 

saalek110

Well-Known Member
سالک:داخل فایل کد نویشه feh را احضار کرد؟

Deepseek:

خیر، کد Python نمی‌تواند به طور مستقیم دستور feh را در ترمینال اجرا کند. خط print("برای مشاهده: feh my_art.png") فقط یک پیام راهنما است که به شما می‌گوید چگونه تصویر را به صورت دستی ببینید.

اگر می‌خواهید برنامه به طور خودکار تصویر را پس از ساخت نمایش دهد، باید از یکی از روش‌های زیر استفاده کنید:

روش ۱: استفاده از subprocess (برای اجرای دستور ترمینال)

کد برنامه را به این شکل تغییر دهید:



Python:
from PIL import Image, ImageDraw
import subprocess

import sys



# تنظیمات

width, height = 500, 400

bg_color = (230, 240, 255)

square_color = (255, 50, 50)



# ایجاد تصویر

image = Image.new("RGB", (width, height), bg_color)

draw = ImageDraw.Draw(image)



# رسم مربع

draw.rectangle([(100, 100), (300, 300)],

               fill=square_color,

               outline=(0, 0, 0),

               width=5)



# ذخیره تصویر

filename = "my_art.png"

image.save(filename)

print(f"✅ تصویر با موفقیت ساخته شد: {filename}")



# تلاش برای نمایش خودکار تصویر

try:

    # روش ۱: اول سعی کن feh را اجرا کن

    subprocess.run(["feh", filename])

except FileNotFoundError:

    try:

        # روش ۲: اگر feh نصب نیست، با xdg-open امتحان کن (برای دسکتاپ)

        subprocess.run(["xdg-open", filename])

    except:

        # روش ۳: اگر هیچکدام کار نکرد، فقط پیام بده

        print("⚠️ نرم‌افزار نمایش تصویر یافت نشد.")

        print(" یا 'feh' نصب کنید: sudo apt install feh")

        print("   یا دستی تصویر را باز کنید.")

سالک: برنامه بالا ،در محیط ترمینالی feh را باز نکرد ولی در محیط گرافیکی آن را باز کرد.


️ روش ۲: استفاده از Image.show() (ساده‌تر اما محدودتر)

Python:
from PIL import Image, ImageDraw



# ... (کد قبلی برای ساخت تصویر) ...



image.save("my_art.png")

print("✅ تصویر با موفقیت ساخته شد")


# این تابع سعی می‌کند با برنامه پیش‌فرض سیستم تصویر را باز کند

image.show() # ممکن است در سرور بدون GUI کار نکند


مقایسه روش‌ها

روش نحوه کار نیازمندی‌ها مناسب برای
subprocess + feh مستقیماً feh را اجرا می‌کند نصب feh در سیستم سرورهای لینوکس (بدون دسکتاپ)
subprocess + xdg-open برنامه پیش‌فرض سیستم را می‌گشاید محیط دسکتاپ سیستم‌های دارای GUI
Image.show() تابع داخلی PIL بستگی به سیستم تست سریع
فقط ذخیره فقط فایل می‌سازد هیچ سرورهای بدون نمایشگر

کدام روش را ترجیح می‌دهید؟

· اگر روی سرور بدون رابط گرافیکی هستید، روش feh بهترین است.
· اگر روی دسکتاپ هستید، xdg-open یا Image.show() بهتر کار می‌کند.[/CODE]
 
آخرین ویرایش:

saalek110

Well-Known Member

oot@localhost:~# cd my_python_env
root@localhost:~/my_python_env# ls
bin include lib lib64 pyvenv.cfg
root@localhost:~/my_python_env# cd bin
root@localhost:~/my_python_env/bin# ls
activate activate.fish pip pip3.13 python3
activate.csh Activate.ps1 pip3 python python3.13
root@localhost:~/my_python_env/bin#

در کد بالا ، من وارد پوشه my_python_env شدم و لیست گرفتم که می بینید محتویاتش اینه:

bin include lib lib64 pyvenv.cfg

بعدش وارد پوشه bin می شوم و متحویاتش اینه:


activate activate.fish pip pip3.13 python3

activate.csh Activate.ps1 pip3 python python3.13

خواستم فقط ببینید چه طوری محیط env ساخته میشه. خارج میشم الان.

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

source ~/my_python_env/bin/activate


root@localhost:~/my_python_env/bin# cd ..
root@localhost:~/my_python_env# cd ..
root@localhost:~# source ~/my_python_env/
bin/activate
(my_python_env) root@localhost:~#

در خطوط بالا می بینید با زدن دو بار cd .. بالا می بینید ، از پوشه بالا اومدم و دستور اکیتو شدن محیط env را زدم

دستورات این محیط

source مسیر/به/bin/activate فعال‌سازی محیط
deactivate خروج از محیط
which python بررسی مسیر پایتون فعال
pip list مشاهده پکیج‌های نصب‌شده
pip freeze > requirements.txt ذخیره لیست پکیج‌ها


اگر محل دقیق محیط مجازی را فراموش کرده‌اید:

```bash
# جستجو در پوشه home
find ~ -name "activate" -type f 2>/dev/null | grep bin/activate

# یا جستجو برای پوشه‌های env
find ~ -type d -name "*env*" 2>/dev/null
 
آخرین ویرایش:

saalek110

Well-Known Member
اگر روی سرور بدون رابط گرافیکی هستید، روش feh بهترین است.
· اگر روی دسکتاپ هستید، xdg-open یا Image.show() بهتر کار می‌کند
به هوش مصنوعی Deepsee,، با توجه به دو جمله بالا ، .....
من که لینوکس بر ترموکس نصب کرده ام ..شامل کدام حالت بالا هستم؟

شما یک حالت خاص و جالب دارید که ترکیبی از هر دو حالت است! بیایید دقیق‌تر بررسی کنیم:

وضعیت شما: Termux + Linux + VNC Viewer

بخش وضعیت توضیح
Termux سرور بدون GUI در خود Termux رابط گرافیکی ندارید
Linux (در Termux) سرور بدون GUI لینوکس نصب‌شده در Termux هم بدون نمایشگر است
VNC Viewer کلاینت با GUI روی موبایل/کامپیوتر شما محیط گرافیکی می‌بیند
اتصال شبکه‌ای VNC Viewer به سرور VNC در Termux متصل است

نتیجه: شما هر دو دسته‌اید!

۱. از دید Termux/Linux داخلی → سرور بدون GUI

· دستور feh اگر در Termux نصب باشد، تصویر را در ترمینال Termux نمایش می‌دهد (با کاراکترهای ASCII!)
· Image.show() احتمالاً کار نمی‌کند

۲. از دید VNC Viewer → دسکتاپ با GUI

· دستور xdg-open در محیط VNC، تصویر را در پنجره VNC باز می‌کند
· برنامه‌های گرافیکی در دسکتاپ VNC اجرا می‌شوند

آزمایش عملی: کدام بهتر کار می‌کند؟

این کد را اجرا کنید تا ببینید چه ابزارهایی در دسترس هستند:


Python:
import subprocess
import sys

def check_tool(name):
    """بررسی وجود یک ابزار در سیستم"""
    try:
        result = subprocess.run(["which", name],
                               capture_output=True,
                               text=True,
                               timeout=2)
        return result.returncode == 0
    except:
        return False

print(" بررسی ابزارهای نمایش تصویر...")
print("-" * 40)

tools = {
    "feh": "نمایشگر ترمینال",
    "xdg-open": "برنامه پیشفرض دسکتاپ",
    "display": "ImageMagick (گرافیکی)",
    "eog": "Eye of GNOME (گرافیکی)"
}

available = []
for tool, desc in tools.items():
    if check_tool(tool):
        print(f"✅ {tool}: {desc} - **موجود**")
        available.append(tool)
    else:
        print(f"❌ {tool}: {desc} - موجود نیست")

print("-" * 40)

if available:
    print(f" {len(available)} ابزار موجود است.")
    print("پیشنهاد من:")
  
    if "xdg-open" in available:
        print("   اولویت ۱: xdg-open (برای VNC)")
    if "feh" in available:
        print("   اولویت ۲: feh (برای ترمینال Termux)")
else:
    print("⚠️ هیچ نمایشگری یافت نشد!")
  
# ساخت یک تصویر تست
print("\n ساخت تصویر تست...")
try:
    from PIL import Image, ImageDraw
    img = Image.new("RGB", (300, 200), (220, 240, 255))
    draw = ImageDraw.Draw(img)
    draw.rectangle([(50, 50), (250, 150)], fill=(100, 150, 200))
    img.save("test_env.png")
    print("✅ تصویر تست ساخته شد: test_env.png")
except ImportError:
    print("❌ Pillow نصب نیست. دستور: pip install Pillow")

پیشنهاد نهایی برای شما

کد بهینه‌شده مخصوص محیط شما:

Python:
from PIL import Image, ImageDraw
import subprocess
import os

# 1. ساخت تصویر
filename = "my_design.png"
image = Image.new("RGB", (600, 400), (250, 245, 240))
draw = ImageDraw.Draw(image)

# طراحی
draw.rectangle([(100, 100), (500, 300)],
               fill=(135, 206, 235),  # آبی آسمانی
               outline=(70, 130, 180),
               width=6)
draw.text((200, 350), "Termux + VNC", fill=(25, 25, 112))

image.save(filename)
print(f"✨ تصویر ساخته شد: {filename}")

# 2. نمایش هوشمند - مخصوص محیط شما
vnc_mode = True  # اگر از VNC استفاده می‌کنید True بگذارید

if vnc_mode:
    print("\n حالت VNC فعال")
    print("   تلاش برای نمایش در پنجره VNC...")
   
    try:
        # اول xdg-open (برای VNC)
        subprocess.Popen(["xdg-open", filename])
        print("   ✅ با xdg-open ارسال شد")
       
        # همچنین feh را در پس‌زمینه امتحان کن
        import time
        time.sleep(1)
        subprocess.Popen(["feh", filename])
        print("   ✅ با feh هم ارسال شد")
       
    except Exception as e:
        print(f"   ⚠️ خطا: {e}")
else:
    print("\n حالت ترمینال خالص")
    subprocess.run(["feh", filename])


نکته مهم: feh در Termux چگونه نمایش می‌دهد؟

اگر feh را در Termux نصب کنید و تصویر را نمایش دهید:

· در ترمینال معمولی Termux: تصویر با کاراکترهای ASCII نشان داده می‌شود!
· در VNC Viewer: ممکن است پنجره گرافیکی باز کند (بستگی به تنظیمات دارد)

آزمایش کنید: کد بالا را با vnc_mode = True و سپس vnc_mode = False اجرا کنید و تفاوت را ببینید!

چه سوال دیگری درباره این محیط ترکیبی دارید؟

سالک: برنامه دومی را اجرا کردم..... ، در محیط ترمینالی که هیچ کدام از روشها کار نمی کند و در محیط گرافیکی فقط feh کار می کند.
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا