mirror of https://github.com/python/cpython
command line parameters: use Py_DecodeLocale() and PyUnicode_DecodeFSDefault().
This commit is contained in:
parent
f6a271ae98
commit
25e014bd91
|
@ -134,6 +134,9 @@ Process-wide parameters
|
||||||
change for the duration of the program's execution. No code in the Python
|
change for the duration of the program's execution. No code in the Python
|
||||||
interpreter will change the contents of this storage.
|
interpreter will change the contents of this storage.
|
||||||
|
|
||||||
|
Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a
|
||||||
|
:c:type:`wchar_*` string.
|
||||||
|
|
||||||
|
|
||||||
.. c:function:: wchar* Py_GetProgramName()
|
.. c:function:: wchar* Py_GetProgramName()
|
||||||
|
|
||||||
|
@ -243,6 +246,9 @@ Process-wide parameters
|
||||||
:data:`sys.exec_prefix` to be empty. It is up to the caller to modify these
|
:data:`sys.exec_prefix` to be empty. It is up to the caller to modify these
|
||||||
if required after calling :c:func:`Py_Initialize`.
|
if required after calling :c:func:`Py_Initialize`.
|
||||||
|
|
||||||
|
Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a
|
||||||
|
:c:type:`wchar_*` string.
|
||||||
|
|
||||||
|
|
||||||
.. c:function:: const char* Py_GetVersion()
|
.. c:function:: const char* Py_GetVersion()
|
||||||
|
|
||||||
|
@ -339,6 +345,9 @@ Process-wide parameters
|
||||||
:data:`sys.path`, which is the same as prepending the current working
|
:data:`sys.path`, which is the same as prepending the current working
|
||||||
directory (``"."``).
|
directory (``"."``).
|
||||||
|
|
||||||
|
Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a
|
||||||
|
:c:type:`wchar_*` string.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
It is recommended that applications embedding the Python interpreter
|
It is recommended that applications embedding the Python interpreter
|
||||||
for purposes other than executing a single script pass 0 as *updatepath*,
|
for purposes other than executing a single script pass 0 as *updatepath*,
|
||||||
|
@ -363,6 +372,9 @@ Process-wide parameters
|
||||||
to 1 unless the :program:`python` interpreter was started with the
|
to 1 unless the :program:`python` interpreter was started with the
|
||||||
:option:`-I`.
|
:option:`-I`.
|
||||||
|
|
||||||
|
Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a
|
||||||
|
:c:type:`wchar_*` string.
|
||||||
|
|
||||||
.. versionchanged:: 3.4 The *updatepath* value depends on :option:`-I`.
|
.. versionchanged:: 3.4 The *updatepath* value depends on :option:`-I`.
|
||||||
|
|
||||||
|
|
||||||
|
@ -377,6 +389,9 @@ Process-wide parameters
|
||||||
execution. No code in the Python interpreter will change the contents of
|
execution. No code in the Python interpreter will change the contents of
|
||||||
this storage.
|
this storage.
|
||||||
|
|
||||||
|
Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a
|
||||||
|
:c:type:`wchar_*` string.
|
||||||
|
|
||||||
|
|
||||||
.. c:function:: w_char* Py_GetPythonHome()
|
.. c:function:: w_char* Py_GetPythonHome()
|
||||||
|
|
||||||
|
|
|
@ -58,12 +58,18 @@ perform some operation on a file. ::
|
||||||
int
|
int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
Py_SetProgramName(argv[0]); /* optional but recommended */
|
wchar_t *program = Py_DecodeLocale(argv[0], NULL);
|
||||||
Py_Initialize();
|
if (program == NULL) {
|
||||||
PyRun_SimpleString("from time import time,ctime\n"
|
fprintf(stderr, "Fatal error: cannot decode argv[0]\n");
|
||||||
"print('Today is', ctime(time()))\n");
|
exit(1);
|
||||||
Py_Finalize();
|
}
|
||||||
return 0;
|
Py_SetProgramName(program); /* optional but recommended */
|
||||||
|
Py_Initialize();
|
||||||
|
PyRun_SimpleString("from time import time,ctime\n"
|
||||||
|
"print('Today is', ctime(time()))\n");
|
||||||
|
Py_Finalize();
|
||||||
|
PyMem_RawFree(program);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
The :c:func:`Py_SetProgramName` function should be called before
|
The :c:func:`Py_SetProgramName` function should be called before
|
||||||
|
@ -160,7 +166,7 @@ for data conversion between Python and C, and for error reporting. The
|
||||||
interesting part with respect to embedding Python starts with ::
|
interesting part with respect to embedding Python starts with ::
|
||||||
|
|
||||||
Py_Initialize();
|
Py_Initialize();
|
||||||
pName = PyUnicode_FromString(argv[1]);
|
pName = PyUnicode_DecodeFSDefault(argv[1]);
|
||||||
/* Error checking of pName left out */
|
/* Error checking of pName left out */
|
||||||
pModule = PyImport_Import(pName);
|
pModule = PyImport_Import(pName);
|
||||||
|
|
||||||
|
|
|
@ -370,11 +370,17 @@ optionally followed by an import of the module::
|
||||||
int
|
int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
wchar_t *program = Py_DecodeLocale(argv[0], NULL);
|
||||||
|
if (program == NULL) {
|
||||||
|
fprintf(stderr, "Fatal error: cannot decode argv[0]\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
/* Add a built-in module, before Py_Initialize */
|
/* Add a built-in module, before Py_Initialize */
|
||||||
PyImport_AppendInittab("spam", PyInit_spam);
|
PyImport_AppendInittab("spam", PyInit_spam);
|
||||||
|
|
||||||
/* Pass argv[0] to the Python interpreter */
|
/* Pass argv[0] to the Python interpreter */
|
||||||
Py_SetProgramName(argv[0]);
|
Py_SetProgramName(program);
|
||||||
|
|
||||||
/* Initialize the Python interpreter. Required. */
|
/* Initialize the Python interpreter. Required. */
|
||||||
Py_Initialize();
|
Py_Initialize();
|
||||||
|
@ -386,6 +392,10 @@ optionally followed by an import of the module::
|
||||||
|
|
||||||
...
|
...
|
||||||
|
|
||||||
|
PyMem_RawFree(program);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
Removing entries from ``sys.modules`` or importing compiled modules into
|
Removing entries from ``sys.modules`` or importing compiled modules into
|
||||||
|
|
|
@ -13,7 +13,7 @@ main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
|
|
||||||
Py_Initialize();
|
Py_Initialize();
|
||||||
pName = PyUnicode_FromString(argv[1]);
|
pName = PyUnicode_DecodeFSDefault(argv[1]);
|
||||||
/* Error checking of pName left out */
|
/* Error checking of pName left out */
|
||||||
|
|
||||||
pModule = PyImport_Import(pName);
|
pModule = PyImport_Import(pName);
|
||||||
|
|
Loading…
Reference in New Issue