Skip to content

pyoxidizer init-rust-project does not works as documented #335

@the-ica

Description

@the-ica

pyoxidizer init-rust-project pyapp

I then modified src/main.rs :

#![windows_subsystem = "console"]

use pyembed::MainPythonInterpreter;

// Include an auto-generated file containing the default
// pyembed::OxidizedPythonInterpreterConfig derived by the PyOxidizer
// configuration file.
//
// If you do not want to use PyOxidizer to generate this file, simply
// remove this line and instantiate your own instance of
// pyembed::OxidizedPythonInterpreterConfig.
include!(env!("PYOXIDIZER_DEFAULT_PYTHON_CONFIG_RS"));

fn main() {
    // The following code is in a block so the MainPythonInterpreter is destroyed in an
    // orderly manner, before process exit.
    let code = {
        // Load the default Python configuration as derived by the PyOxidizer config
        // file used at build time.
        let config = default_python_config();

        // Construct a new Python interpreter using that config, handling any errors
        // from construction.
        match MainPythonInterpreter::new(config) {
            Ok(mut interp) => {
                // And run it using the default run configuration as specified by the
                // configuration. If an uncaught Python exception is raised, handle it.
                // This includes the special SystemExit, which is a request to terminate the
                // process.
                // interp.run_as_main()
                let py = interp.acquire_gil().unwrap();
                match py.eval( "print('hello, world')", None, None) {
                    Ok(_) => println!("python code executed successfully"),
                    Err(e) => println!("python error: {:?}", e),
                }
                0
            }
            Err(msg) => {
                eprintln!("{}", msg);
                1
            }
        }
    };

    // And exit the process according to code execution results.
    std::process::exit(code);
}

but when running

pyoxidizer run

I get the same python REPL as without modification !

And also,

cargo run --features jemalloc build-mode-pyoxidizer-exe

fail with

Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
Python runtime state: core initialized
ModuleNotFoundError: No module named 'encodings'

That may be normal, but nothing tell me why in the doc.

I'm using ubuntu 20.04 and rust/cargo 1.47

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions