forked from AFPy/python-docs-fr
Julien Palard
f302fcb215
http://jacques-andre.fr/faqtypo/lessons.pdf , §2.6 page 12 "en français, pas de majuscule initiale à tous les substantifs d’un titre" et §3.3.2 page 15
389 lines
14 KiB
Plaintext
389 lines
14 KiB
Plaintext
# SOME DESCRIPTIVE TITLE.
|
|
# Copyright (C) 2001-2016, Python Software Foundation
|
|
# This file is distributed under the same license as the Python package.
|
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
#
|
|
#, fuzzy
|
|
msgid ""
|
|
msgstr ""
|
|
"Project-Id-Version: Python 3.6\n"
|
|
"Report-Msgid-Bugs-To: \n"
|
|
"POT-Creation-Date: 2018-01-04 15:51+0100\n"
|
|
"PO-Revision-Date: 2018-02-15 00:37+0100\n"
|
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
|
"Language: fr\n"
|
|
"MIME-Version: 1.0\n"
|
|
"Content-Type: text/plain; charset=UTF-8\n"
|
|
"Content-Transfer-Encoding: 8bit\n"
|
|
|
|
#: ../Doc/faq/extending.rst:3
|
|
msgid "Extending/Embedding FAQ"
|
|
msgstr "FAQ extension/intégration"
|
|
|
|
#: ../Doc/faq/extending.rst:16
|
|
msgid "Can I create my own functions in C?"
|
|
msgstr "Puis-je créer mes propres fonctions en C ?"
|
|
|
|
#: ../Doc/faq/extending.rst:18
|
|
msgid ""
|
|
"Yes, you can create built-in modules containing functions, variables, "
|
|
"exceptions and even new types in C. This is explained in the document :ref:"
|
|
"`extending-index`."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:22
|
|
msgid "Most intermediate or advanced Python books will also cover this topic."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:26
|
|
msgid "Can I create my own functions in C++?"
|
|
msgstr "Puis-je créer mes propres fonctions en C++ ?"
|
|
|
|
#: ../Doc/faq/extending.rst:28
|
|
msgid ""
|
|
"Yes, using the C compatibility features found in C++. Place ``extern \"C"
|
|
"\" { ... }`` around the Python include files and put ``extern \"C\"`` before "
|
|
"each function that is going to be called by the Python interpreter. Global "
|
|
"or static C++ objects with constructors are probably not a good idea."
|
|
msgstr ""
|
|
"Oui, en utilisant les fonctionnalités de compatibilité C existantes en C++. "
|
|
"Placez ``extern \"C\" { ... }`` autour des fichiers Python inclus et mettez "
|
|
"``extern \"C\"`` avant chaque fonction qui va être appelée par "
|
|
"l'interpréteur Python. Les objets C++ globaux ou statiques avec les "
|
|
"constructeurs ne sont probablement pas une bonne idée."
|
|
|
|
#: ../Doc/faq/extending.rst:37
|
|
msgid "Writing C is hard; are there any alternatives?"
|
|
msgstr "Écrire directement en C est difficile ; existe-t-il des alternatives ?"
|
|
|
|
#: ../Doc/faq/extending.rst:39
|
|
msgid ""
|
|
"There are a number of alternatives to writing your own C extensions, "
|
|
"depending on what you're trying to do."
|
|
msgstr ""
|
|
"Il y a un certain nombre de solutions existantes qui vous permettent "
|
|
"d'écrire vos propres extensions C, selon ce que vous essayez de faire."
|
|
|
|
#: ../Doc/faq/extending.rst:44
|
|
msgid ""
|
|
"`Cython <http://cython.org>`_ and its relative `Pyrex <https://www.cosc."
|
|
"canterbury.ac.nz/greg.ewing/python/Pyrex/>`_ are compilers that accept a "
|
|
"slightly modified form of Python and generate the corresponding C code. "
|
|
"Cython and Pyrex make it possible to write an extension without having to "
|
|
"learn Python's C API."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:50
|
|
msgid ""
|
|
"If you need to interface to some C or C++ library for which no Python "
|
|
"extension currently exists, you can try wrapping the library's data types "
|
|
"and functions with a tool such as `SWIG <http://www.swig.org>`_. `SIP "
|
|
"<https://riverbankcomputing.com/software/sip/intro>`__, `CXX <http://cxx."
|
|
"sourceforge.net/>`_ `Boost <http://www.boost.org/libs/python/doc/index."
|
|
"html>`_, or `Weave <https://github.com/scipy/weave>`_ are also alternatives "
|
|
"for wrapping C++ libraries."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:61
|
|
msgid "How can I execute arbitrary Python statements from C?"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:63
|
|
msgid ""
|
|
"The highest-level function to do this is :c:func:`PyRun_SimpleString` which "
|
|
"takes a single string argument to be executed in the context of the module "
|
|
"``__main__`` and returns 0 for success and -1 when an exception occurred "
|
|
"(including ``SyntaxError``). If you want more control, use :c:func:"
|
|
"`PyRun_String`; see the source for :c:func:`PyRun_SimpleString` in ``Python/"
|
|
"pythonrun.c``."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:72
|
|
msgid "How can I evaluate an arbitrary Python expression from C?"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:74
|
|
msgid ""
|
|
"Call the function :c:func:`PyRun_String` from the previous question with the "
|
|
"start symbol :c:data:`Py_eval_input`; it parses an expression, evaluates it "
|
|
"and returns its value."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:80
|
|
msgid "How do I extract C values from a Python object?"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:82
|
|
msgid ""
|
|
"That depends on the object's type. If it's a tuple, :c:func:`PyTuple_Size` "
|
|
"returns its length and :c:func:`PyTuple_GetItem` returns the item at a "
|
|
"specified index. Lists have similar functions, :c:func:`PyListSize` and :c:"
|
|
"func:`PyList_GetItem`."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:87
|
|
msgid ""
|
|
"For bytes, :c:func:`PyBytes_Size` returns its length and :c:func:"
|
|
"`PyBytes_AsStringAndSize` provides a pointer to its value and its length. "
|
|
"Note that Python bytes objects may contain null bytes so C's :c:func:"
|
|
"`strlen` should not be used."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:92
|
|
msgid ""
|
|
"To test the type of an object, first make sure it isn't *NULL*, and then "
|
|
"use :c:func:`PyBytes_Check`, :c:func:`PyTuple_Check`, :c:func:"
|
|
"`PyList_Check`, etc."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:95
|
|
msgid ""
|
|
"There is also a high-level API to Python objects which is provided by the so-"
|
|
"called 'abstract' interface -- read ``Include/abstract.h`` for further "
|
|
"details. It allows interfacing with any kind of Python sequence using calls "
|
|
"like :c:func:`PySequence_Length`, :c:func:`PySequence_GetItem`, etc. as well "
|
|
"as many other useful protocols such as numbers (:c:func:`PyNumber_Index` et "
|
|
"al.) and mappings in the PyMapping APIs."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:104
|
|
msgid "How do I use Py_BuildValue() to create a tuple of arbitrary length?"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:106
|
|
msgid "You can't. Use :c:func:`PyTuple_Pack` instead."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:110
|
|
msgid "How do I call an object's method from C?"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:112
|
|
msgid ""
|
|
"The :c:func:`PyObject_CallMethod` function can be used to call an arbitrary "
|
|
"method of an object. The parameters are the object, the name of the method "
|
|
"to call, a format string like that used with :c:func:`Py_BuildValue`, and "
|
|
"the argument values::"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:121
|
|
msgid ""
|
|
"This works for any object that has methods -- whether built-in or user-"
|
|
"defined. You are responsible for eventually :c:func:`Py_DECREF`\\ 'ing the "
|
|
"return value."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:124
|
|
msgid ""
|
|
"To call, e.g., a file object's \"seek\" method with arguments 10, 0 "
|
|
"(assuming the file object pointer is \"f\")::"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:135
|
|
msgid ""
|
|
"Note that since :c:func:`PyObject_CallObject` *always* wants a tuple for the "
|
|
"argument list, to call a function without arguments, pass \"()\" for the "
|
|
"format, and to call a function with one argument, surround the argument in "
|
|
"parentheses, e.g. \"(i)\"."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:142
|
|
msgid ""
|
|
"How do I catch the output from PyErr_Print() (or anything that prints to "
|
|
"stdout/stderr)?"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:144
|
|
msgid ""
|
|
"In Python code, define an object that supports the ``write()`` method. "
|
|
"Assign this object to :data:`sys.stdout` and :data:`sys.stderr`. Call "
|
|
"print_error, or just allow the standard traceback mechanism to work. Then, "
|
|
"the output will go wherever your ``write()`` method sends it."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:149
|
|
msgid "The easiest way to do this is to use the :class:`io.StringIO` class:"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:161
|
|
msgid "A custom object to do the same would look like this:"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:182
|
|
msgid "How do I access a module written in Python from C?"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:184
|
|
msgid "You can get a pointer to the module object as follows::"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:188
|
|
msgid ""
|
|
"If the module hasn't been imported yet (i.e. it is not yet present in :data:"
|
|
"`sys.modules`), this initializes the module; otherwise it simply returns the "
|
|
"value of ``sys.modules[\"<modulename>\"]``. Note that it doesn't enter the "
|
|
"module into any namespace -- it only ensures it has been initialized and is "
|
|
"stored in :data:`sys.modules`."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:194
|
|
msgid ""
|
|
"You can then access the module's attributes (i.e. any name defined in the "
|
|
"module) as follows::"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:199
|
|
msgid ""
|
|
"Calling :c:func:`PyObject_SetAttrString` to assign to variables in the "
|
|
"module also works."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:204
|
|
msgid "How do I interface to C++ objects from Python?"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:206
|
|
msgid ""
|
|
"Depending on your requirements, there are many approaches. To do this "
|
|
"manually, begin by reading :ref:`the \"Extending and Embedding\" document "
|
|
"<extending-index>`. Realize that for the Python run-time system, there "
|
|
"isn't a whole lot of difference between C and C++ -- so the strategy of "
|
|
"building a new Python type around a C structure (pointer) type will also "
|
|
"work for C++ objects."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:212
|
|
msgid "For C++ libraries, see :ref:`c-wrapper-software`."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:216
|
|
msgid "I added a module using the Setup file and the make fails; why?"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:218
|
|
msgid ""
|
|
"Setup must end in a newline, if there is no newline there, the build process "
|
|
"fails. (Fixing this requires some ugly shell script hackery, and this bug "
|
|
"is so minor that it doesn't seem worth the effort.)"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:224
|
|
msgid "How do I debug an extension?"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:226
|
|
msgid ""
|
|
"When using GDB with dynamically loaded extensions, you can't set a "
|
|
"breakpoint in your extension until your extension is loaded."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:229
|
|
msgid "In your ``.gdbinit`` file (or interactively), add the command:"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:235
|
|
msgid "Then, when you run GDB:"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:247
|
|
msgid ""
|
|
"I want to compile a Python module on my Linux system, but some files are "
|
|
"missing. Why?"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:249
|
|
msgid ""
|
|
"Most packaged versions of Python don't include the :file:`/usr/lib/python2."
|
|
"{x}/config/` directory, which contains various files required for compiling "
|
|
"Python extensions."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:253
|
|
msgid "For Red Hat, install the python-devel RPM to get the necessary files."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:255
|
|
msgid "For Debian, run ``apt-get install python-dev``."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:259
|
|
msgid "How do I tell \"incomplete input\" from \"invalid input\"?"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:261
|
|
msgid ""
|
|
"Sometimes you want to emulate the Python interactive interpreter's behavior, "
|
|
"where it gives you a continuation prompt when the input is incomplete (e.g. "
|
|
"you typed the start of an \"if\" statement or you didn't close your "
|
|
"parentheses or triple string quotes), but it gives you a syntax error "
|
|
"message immediately when the input is invalid."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:267
|
|
msgid ""
|
|
"In Python you can use the :mod:`codeop` module, which approximates the "
|
|
"parser's behavior sufficiently. IDLE uses this, for example."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:270
|
|
msgid ""
|
|
"The easiest way to do it in C is to call :c:func:`PyRun_InteractiveLoop` "
|
|
"(perhaps in a separate thread) and let the Python interpreter handle the "
|
|
"input for you. You can also set the :c:func:`PyOS_ReadlineFunctionPointer` "
|
|
"to point at your custom input function. See ``Modules/readline.c`` and "
|
|
"``Parser/myreadline.c`` for more hints."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:276
|
|
msgid ""
|
|
"However sometimes you have to run the embedded Python interpreter in the "
|
|
"same thread as your rest application and you can't allow the :c:func:"
|
|
"`PyRun_InteractiveLoop` to stop while waiting for user input. The one "
|
|
"solution then is to call :c:func:`PyParser_ParseString` and test for ``e."
|
|
"error`` equal to ``E_EOF``, which means the input is incomplete). Here's a "
|
|
"sample code fragment, untested, inspired by code from Alex Farber::"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:309
|
|
msgid ""
|
|
"Another solution is trying to compile the received string with :c:func:"
|
|
"`Py_CompileString`. If it compiles without errors, try to execute the "
|
|
"returned code object by calling :c:func:`PyEval_EvalCode`. Otherwise save "
|
|
"the input for later. If the compilation fails, find out if it's an error or "
|
|
"just more input is required - by extracting the message string from the "
|
|
"exception tuple and comparing it to the string \"unexpected EOF while parsing"
|
|
"\". Here is a complete example using the GNU readline library (you may want "
|
|
"to ignore **SIGINT** while calling readline())::"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:430
|
|
msgid "How do I find undefined g++ symbols __builtin_new or __pure_virtual?"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:432
|
|
msgid ""
|
|
"To dynamically load g++ extension modules, you must recompile Python, relink "
|
|
"it using g++ (change LINKCC in the Python Modules Makefile), and link your "
|
|
"extension module using g++ (e.g., ``g++ -shared -o mymodule.so mymodule.o``)."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:438
|
|
msgid ""
|
|
"Can I create an object class with some methods implemented in C and others "
|
|
"in Python (e.g. through inheritance)?"
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:440
|
|
msgid ""
|
|
"Yes, you can inherit from built-in classes such as :class:`int`, :class:"
|
|
"`list`, :class:`dict`, etc."
|
|
msgstr ""
|
|
|
|
#: ../Doc/faq/extending.rst:443
|
|
msgid ""
|
|
"The Boost Python Library (BPL, http://www.boost.org/libs/python/doc/index."
|
|
"html) provides a way of doing this from C++ (i.e. you can inherit from an "
|
|
"extension class written in C++ using the BPL)."
|
|
msgstr ""
|