# FAQ Python di Windows

## Bagaimana cara mengoperasikan program Python di Windows?

Ini belum tentu pertanyaan langsung. Jika Anda sudahFamiliar dengan program yang berjalan dari Windows command line maka semuanyaAkan tampak jelas; jika tidak, Anda mungkin membutuhkan lebih banyak panduan.

Unless you use some sort of integrated development environment, you will end up typing Windows commands into what is referred to as a "Command prompt window". Usually you can create such a window from your search bar by searching for `cmd`. You should be able to recognize when you have started such a window because you will see a Windows "command prompt", which usually looks like this:

    C:\>

Suratnya mungkin berbeda, dan mungkin ada hal lain setelahnya, jadi kamu mungkin dapat dengan mudah melihat sesuatu seperti ini:

    D:\YourName\Projects\Python>

tergantung pada bagaimana komputer Anda telah diatur dan apa lagi yang Anda baru saja selesai dengan itu. Setelah Anda memulai sebuah window seperti itu, Anda sudah siap menjalankan program Python.

Anda perlu menyadari bahwa skrip Python Anda harus diproses oleh orang program yang disebut dengan Python interpreter. Interpreter itu membaca skrip anda, mengkompilasinya menjadi bytecode, dan kemudian mengeksekusi bytecode untuk menjalankan program Anda. Jadi, bagaimana Anda mengatur interpreter untuk menangani PythonAnda?

Pertama, Anda perlu memastikan bahwa command window Anda mengenali kata "py" sebagai instruksi untuk memulai penerjemah. Jika Anda telah membuka command window, Anda dapat mengketik command `py` dan menekan kembali:

    C:\Users\YourName> py

Anda dapat melihat sesuatu tampak seperti ini:

    Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>>

Anda telah memulai penerjemah dalam "mode interaktif". Artinya kamu bisa masuk ke dalam pernyataan atau ekspresi Python secara interaktif dan mengeksekusi atau mengevaluasi selang Anda menunggu. Ini adalah salah satu fitur terkuat Python. Periksa dengan memasukkan beberapa ekspresi pilihan Anda dan melihat hasilnya:

    >>> print("Hello")
    Hello
    >>> "Hello" * 3
    'HelloHelloHello'

Banyak orang menggunakan mode interaktif sebagai cara yang nyaman namun sangat dapat diprogram kalulator. Saat Anda ingin mengakhiri sesi Python interaktif Anda, panggil fungsi `exit()` atau tahan tombol `Ctrl` saat anda menekan tombol `Z`, lalu tekan "`Enter`" untuk kembali ke Windows command prompt Anda.

Anda mungkin juga menemukan bahwa Anda memiliki entri Start-menu seperti Start ‣ Programs ‣ Python 3.x ‣ Python (command line) yang mengakibatkan Anda melihat prompt `>>>` di jendela baru. Jika demikian, jendela tersebut akan menghilang setelah anda memanggil fungsi `exit()` atau menekan ``Ctrl`-`Z`` karakter; Windows menjalankan satu perintah "python" di jendela tersebut, dan tutup itu ketika anda akan mengakhiri interpreter.

Sekarang kita tahu bahwa perintah `py` dikenali, Anda dapat memberikan hal tersebut ke dalam Python script. Anda harus memberikan jalur absolut atau relatif ke Python skrip tersebut. Katakanlah skrip Python Anda ada di desktop Anda dan itu bernama `hello.py`. dan command prompt Anda terbuka di direktori home jadi anda dapat tampak melihat sesuatu familiar seperti:

    C:\Users\YourName>

Jadi sekarang Anda akan meminta perintah `py` untuk memberikan skrip Anda ke Python dengan mengetik `py` yang dilanjuti dengan jalur skrip Anda:

    C:\Users\YourName> py Desktop\hello.py
    hello

## Bagaimana cara saya membuat skrip Python dapat dieksekusi?

Di Windows, standar penginstal Python sudah diasosiasikan dengan .py ekstensi dengan tipe file (Python.File) dan memberikan tipe file tersebut untuk membuka command yang menjalankan interpreter (`D:\Program Files\Python\python.exe "%1" %*`). Ini cukup untuk membuat skrip dapat dieksekusi dari perintah simpel dengan mengketik 'foo' tanpa ekstensi yang perlu Anda tambahkan .py di PATHEXT environment variable.

## Mengapa Python terkadang membutuhkan waktu lama untuk memulai?

Biasanya, Python terbuka sangat cepat di Windows, tetapi terkadang ada laporan bug bahwa Python tiba-tiba mulai membutuhkan waktu lama untuk memulai. Ini menjadi lebih membingungkan karena Python akan berfungsi dengan baik pada Windows sistem yang lain yang mana secara identikal terkonfigurasi.

Masalahnya mungkin disebabkan oleh kesalahan konfigurasi perangkat lunak pemeriksaan virus di mesin masalah. Beberapa pemindai virus telah diketahui memperkenalkan overhead startup dua kali lipat saat pemindai dikonfigurasi untuk memantau semua pembacaan dari sistem file. Coba periksa konfigurasi dari perangkat lunak pemindaian virus pada sistem Anda untuk memastikan bahwa perangkat memang benar terkonfigurasi secara identik. McAfee, ketika dikonfigurasi untuk memindai semua aktivitas baca dari sistem file aktivitas, adalah pelaku tertentu.

## Bagaimana cara membuat sebuah executable dari skrip Python?

Lihat How can I create a stand-alone binary from a Python script? untuk daftar perkakas yang dapat digunakan membuat aplikasi yang dapat dieksekusi.

## Apakah file `*.pyd` sama dengan DLL?

Ya, .pyd file merupakan bagian dari dll, tapi dengan sedikit perbedaan. Jika kamu mempunyai DLL bernama `foo.pyd`, kana itu pasti sebuah fungsi dari `PyInit_foo()`. Anda dapat menulis Python "import foo", dan Python akan mencari untuk foo.pyd(dan juga foo.py, foo.pyc) dan jika itu ditemukan, maka akan memanggil `PyInit_foo()` untuk segera diinisalisasikan. Anda tidak menautkan .exe Anda dengan foo.lib, karena hal itu akan menyebabkan Windows memerlukan DLL.

Perhatikan bahwa jalur pencarian untuk foo.pyd adalah PYTHONPATH, tidak sama dengan jalur yang digunakan Windows untuk mencari foo.dll. Selain itu, foo.pyd tidak perlu hadir untuk menjalankan program Anda, sedangkan jika Anda menautkan program Anda dengan dll, dll diperlukan. Tentu saja, foo.pyd diperlukan jika Anda ingin mengatakannya `import foo`. Di file DLL, keterkaitan dideklarasikan dalam kode sumber dengan `__declspec(dllexport)`. Di file .pyd, keterkaitan didefinisikan sebagai sebuah list dari fungsi yang tersedia.

## Bagaimana cara memasukkan Python ke dalam aplikasi Windows?

Menyematkan interpreter Python di aplikasi Windows dapat diringkas menjadi sebagai:

1. Do not build Python into your .exe file directly. On Windows, Python must be a DLL to handle importing modules that are themselves DLL's. (This is the first key undocumented fact.) Instead, link to `pythonNN.dll`; it is typically installed in `C:\Windows\System`. NN is the Python version, a number such as "33" for Python 3.3.

   Anda dapat menautkan ke Python dengan dua cara berbeda. Alat penautan waktu muat menautkan ke `pythonNN.lib`, sedangkan penautan run-time berarti menautkan kedalam `pythonNN.dll`. (Catatan umum: `pythonNN.lib` adalah file yang disebut dengan "import lib" sesuai dengan `pythonNN.dll`. itu hanya mendefinisikan simbol untuk linker.)

   Tautan run-time sangat menyederhanakan opsi tautan; semuanya terjadi saat runtime. Kode anda harus dibuka `pythonNN.dll` dengan menggunakan Windows `LoadLibraryEx()`. Kode juga harus menggunakan rutinitas akses dan data di `pythonNN.dll` (yaitu, C API Python) menggunakan pointer yang didapatkan dari Windows `GetProcAddress()`. Makro dapat dibuat dengan menggunakan pointer tersebut ke kode C apapun yang memanggil rutinitas di C Python API.

2. If you use SWIG, it is easy to create a Python "extension module" that will make the app's data and methods available to Python. SWIG will handle just about all the grungy details for you. The result is C code that you link into your .exe file (!) You do not have to create a DLL file, and this also simplifies linking.

3. SWIG akan membuat fungsi init (fungsi C) yang namanya bergantung pada nama modul ekstensi. Misalnya, jika nama modulnya adalah leo, fungsi init akan dipanggil initleo(). Jika Anda menggunakan bayangan SWIG kelas, sebagaimana seharusnya, fungsi init akan dipanggil initleoc(). Ini menginisialisasi kelas pembantu yang sebagian besar tersembunyi yang digunakan oleh kelas bayangan.

   Alasan Anda dapat menautkan kode C pada langkah 2 ke file .exe Anda adalah itu memanggil fungsi inisialisasi sama dengan mengimpor modul ke dalam Python! (Ini adalah fakta kunci tak terdokumentasi kedua.)

4. Singkatnya, Anda dapat menggunakan kode berikut untuk menginisialisasi Python interpreter dengan ekstensi modul Anda.

       #include <Python.h>
       ...
       Py_Initialize();  // Initialize Python.
       initmyAppc();  // Initialize (import) the helper class.
       PyRun_SimpleString("import myApp");  // Import the shadow class.

5. Ada dua masalah dengan C API Python yang akan terlihat jika Andamenggunakan kompilator selain MSVC, kompilator yang digunakan untuk membangun pythonNN.dll.

   Problem 1: The so-called "Very High Level" functions that take `FILE *` arguments will not work in a multi-compiler environment because each compiler's notion of a `struct FILE` will be different. From an implementation standpoint these are very low level functions.

   Masalah 2: SWIG menghasilkan kode berikut saat membuat wrappers ke dalam fungsi void:

       Py_INCREF(Py_None);
       _resultobj = Py_None;
       return _resultobj;

   Sayangnya, Py_None adalah makro yang meluas ke referensi ke data kompleks struktur yang disebut _Py_NoneStruct di dalam pythonNN.dll. Sekali lagi, kode ini akan gagal di lingkungan mult-compiler. Ganti kode tersebut dengan:

       return Py_BuildValue("");

   Dimungkinkan untuk menggunakan perintah `%typemap` SWIG untuk membuat perubahan secara otomatis, meskipun saya belum bisa membuat ini berfungsi (saya adalah pemula SWIG).

6. Menggunakan skrip shell Python untuk memasang jendela interpreter Python di dalam aplikasi Windows Anda bukanlah ide yang bagus; jendela yang dihasilkan akan menjadi terlepas dari sistem windowing aplikasi Anda. Sebaliknya, Anda (atau wxPythonWindow) harus membuat jendela penerjemah "native". ini mudah untuk menghubungkan jendela itu ke interpreter Python. Anda dapat mengalihkan Objek i/o ke _any_ Python yang mendukung baca dan tulis, jadi semua yang Anda butuhkan adalah objek Python (didefinisikan dalam modul ekstensi Anda) yang berisi metode read() dan write().

## Bagaimana cara mencegah editor memasukkan tab ke dalam sumber Python saya?

FAQ tidak merekomendasikan penggunaan tab, dan panduan gaya Python, PEP 8, merekomendasikan dengan 4 spasi untuk distribusi kode Python; ini juga Emacs python-mode secara default.

Di bawah editor apa pun, mencampur tab dan spasi adalah ide yang buruk. MSVC adalah berbeda dalam hal ini, dan mudah dikonfigurasi untuk menggunakan spasi: Ambil Tools ‣ Options ‣ Tabs, dan untuk file tipe "Default" set "Tab size" dan "Indent size" menjadi 4, dan pilih "Insert spaces" tombol radio.

Python akan memunculkan `IndentationError` atau `TabError` jika terdapat gabugan antaratabs dan spasi yang menyebabkan masalah dalam spasi. Anda juga dapat menjalankan `tabnanny` modul untuk mengecek sebuah direktori di mode batch.

## Bagaimana cara memeriksa tombol yang ditekan tanpa memblokir?

Gunakan modul msvcrt. Ini adalah ekstensi khusus Windows standar modul. Ini mendefinisikan fungsi `kbhit()` yang memeriksa apakah keyboard menekan, dan `getch()` yang mendapat satu karakter tanpa mengulanginya.

## How do I solve the missing api-ms-win-crt-runtime-l1-1-0.dll error?

This can occur on Python 3.5 and later when using Windows 8.1 or earlier without all updates having been installed. First ensure your operating system is supported and is up to date, and if that does not resolve the issue, visit the Microsoft support page for guidance on manually installing the C Runtime update.