indygreg / indygreg/PyOxidizer

error[PYOXIDIZER_PYTHON_EXECUTABLE]: adding PythonExecutable to FileManifest

Open
#610 4 comments 9 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
6.2k
Forks
256
PR merge metrics
No merged PRs in 30d

Description

I tried to create a startup example project via `pyoxidizer init-config-file .` and run `pyoxidizer run`,
then I got `error[PYOXIDIZER_PYTHON_EXECUTABLE]: adding PythonExecutable to FileManifest, error: adding PythonExecutable to FileManifest` errors.

```cmd
D:\code\python>mkdir pyoxidizer_example1

D:\code\python>cd pyoxidizer_example1\

D:\code\python\pyoxidizer_example1>pyoxidizer --help
PyOxidizer 0.22.0
Gregory Szorc
Build and distribute Python applications

USAGE:
pyoxidizer [OPTIONS] [SUBCOMMAND]

OPTIONS:
-h, --help
Print help information

--system-rust
Use a system install of Rust instead of a self-managed Rust installation

-V, --version
Print version information

--verbose
Increase logging verbosity. Can be specified multiple times

SUBCOMMANDS:
analyze
Analyze a built binary
build
Build a PyOxidizer enabled project
cache-clear
Clear PyOxidizer's user-specific cache
find-resources
Find resources in a file or directory
generate-python-embedding-artifacts
Generate files useful for embedding Python in a [Rust] binary
help
Print this message or the help of the given subcommand(s)
init-config-file
Create a new PyOxidizer configuration file.
init-rust-project
Create a new Rust project embedding a Python interpreter
list-targets
List targets available to resolve in a configuration file
python-distribution-extract
Extract a Python distribution archive to a directory
python-distribution-info
Show information about a Python distribution archive
python-distribution-licenses
Show licenses for a given Python distribution
run
Run a target in a PyOxidizer configuration file
run-build-script
Run functionality that a build script would perform
rust-project-licensing
Show licensing information for a Rust project

D:\code\python\pyoxidizer_example1>pyoxidizer init-config-file .
writing .\pyoxidizer.bzl

A new PyOxidizer configuration file has been created.
This configuration file can be used by various `pyoxidizer`
commands

For example, to build and run the default Python application:

$ cd .
$ pyoxidizer run

The default configuration is to invoke a Python REPL. You can
edit the configuration file to change behavior.

D:\code\python\pyoxidizer_example1>pyoxidizer run
resolving 1 targets
resolving target install
resolving target exe
target Python distribution for x86_64-pc-windows-msvc resolves to: https://github.com/indygreg/python-build-standalone/releases/download/20220528/cpython-3.10.4%2B20220528-x86_64-pc-windows-msvc-shared-pgo-full.tar.zst (sha256=d636dc1bcca74dd9c6e3b26f7c081b3e229336e8378fe554bf8ba65fe780a2ac)
reusing target Python distribution for host execution
adding Python executable . to .
ensuring Rust toolchain 1.61.0 is available
rustc for x86_64-pc-windows-msvc in C:\Users\Liu.D.H\AppData\Local\pyoxidizer\rust\1.61.0-x86_64-pc-windows-msvc is up-to-date
cargo for x86_64-pc-windows-msvc in C:\Users\Liu.D.H\AppData\Local\pyoxidizer\rust\1.61.0-x86_64-pc-windows-msvc is up-to-date
rust-std for x86_64-pc-windows-msvc in C:\Users\Liu.D.H\AppData\Local\pyoxidizer\rust\1.61.0-x86_64-pc-windows-msvc is up-to-date
Created binary (application) package
writing C:\Users\LIUD~1.H\AppData\Local\Temp\pyoxidizerBoN9i2\.\.cargo\config
writing C:\Users\LIUD~1.H\AppData\Local\Temp\pyoxidizerBoN9i2\.\Cargo.lock
writing C:\Users\LIUD~1.H\AppData\Local\Temp\pyoxidizerBoN9i2\.\build.rs
writing C:\Users\LIUD~1.H\AppData\Local\Temp\pyoxidizerBoN9i2\.\src\main.rs
writing C:\Users\LIUD~1.H\AppData\Local\Temp\pyoxidizerBoN9i2\.\pyoxidizer.bzl
writing C:\Users\LIUD~1.H\AppData\Local\Temp\pyoxidizerBoN9i2\.\pyoxidizerBoN9i2.exe.manifest
writing C:\Users\LIUD~1.H\AppData\Local\Temp\pyoxidizerBoN9i2\.\pyoxidizerBoN9i2-manifest.rc
warning: _distutils_hack contains __file__
warning: asyncio.__main__ contains __file__
warning: cProfile contains __file__
warning: distutils.command.sdist contains __file__
warning: distutils.core contains __file__
warning: distutils.dist contains __file__
warning: doctest contains __file__
warning: encodings contains __file__
warning: idlelib.browser contains __file__
warning: idlelib.config contains __file__
warning: idlelib.help contains __file__
warning: idlelib.help_about contains __file__
warning: idlelib.idle contains __file__
warning: idlelib.pyshell contains __file__
warning: idlelib.runscript contains __file__
warning: idlelib.tree contains __file__
warning: importlib contains __file__
warning: importlib._bootstrap contains __file__
warning: importlib._bootstrap_external contains __file__
warning: importlib.abc contains __file__
warning: inspect contains __file__
warning: lib2to3.pygram contains __file__
warning: logging contains __file__
warning: logging.handlers contains __file__
warning: modulefinder contains __file__
warning: msilib.text contains __file__
warning: multiprocessing.spawn contains __file__
warning: pdb contains __file__
warning: pip.__main__ contains __file__
warning: pip._internal.build_env contains __file__
warning: pip._internal.commands.debug contains __file__
warning: pip._internal.utils.misc contains __file__
warning: pip._internal.utils.setuptools_build contains __file__
warning: pip._internal.utils.virtualenv contains __file__
warning: pip._vendor contains __file__
warning: pip._vendor.certifi.core contains __file__
warning: pip._vendor.distlib.resources contains __file__
warning: pip._vendor.pep517.in_process contains __file__
warning: pip._vendor.pep517.in_process._in_process contains __file__
warning: pip._vendor.pkg_resources contains __file__
warning: pip._vendor.pygments.formatters._mapping contains __file__
warning: pip._vendor.pygments.lexers._mapping contains __file__
warning: pip._vendor.pygments.lexers.python contains __file__
warning: pip._vendor.pygments.sphinxext contains __file__
warning: pip._vendor.pygments.unistring contains __file__
warning: pip._vendor.rich.pretty contains __file__
warning: pip._vendor.rich.traceback contains __file__
warning: pkg_resources contains __file__
warning: pkgutil contains __file__
warning: profile contains __file__
warning: pyclbr contains __file__
warning: pydoc contains __file__
warning: pydoc_data.topics contains __file__
warning: runpy contains __file__
warning: setuptools._distutils.command.bdist_wininst contains __file__
warning: setuptools._distutils.command.sdist contains __file__
warning: setuptools._distutils.core contains __file__
warning: setuptools._distutils.dist contains __file__
warning: setuptools.build_meta contains __file__
warning: setuptools.command.bdist_egg contains __file__
warning: setuptools.command.build_ext contains __file__
warning: setuptools.command.py36compat contains __file__
warning: setuptools.command.setopt contains __file__
warning: setuptools.launch contains __file__
warning: setuptools.sandbox contains __file__
warning: site contains __file__
warning: trace contains __file__
warning: turtle contains __file__
warning: turtledemo.__main__ contains __file__
warning: unittest contains __file__
warning: unittest.loader contains __file__
warning: venv contains __file__
warning: zipimport contains __file__
__file__ was encountered in some embedded modules
PyOxidizer does not set __file__ and this may create problems at run-time
See https://github.com/indygreg/PyOxidizer/issues/69 for more
building with Rust 1.61.0
error: no bin target named `.`
error[PYOXIDIZER_PYTHON_EXECUTABLE]: adding PythonExecutable to FileManifest

Caused by:
0: building Python executable
1: building executable with Rust project
2: cargo build failed
--> .\pyoxidizer.bzl:283:5
|
283 | files.add_python_resource(".", exe)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PythonExecutable.to_file_manifest()

error: adding PythonExecutable to FileManifest

Caused by:
0: building Python executable
1: building executable with Rust project
2: cargo build failed

D:\code\python\pyoxidizer_example1>pyoxidizer --version
PyOxidizer 0.22.0
commit: unknown
source: https://github.com/indygreg/PyOxidizer.git
pyembed crate location: version = "0.22.0"

D:\code\python\pyoxidizer_example1>python -V
Python 3.10.2

D:\code\python\pyoxidizer_example1>
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Reproduce the Windows failure with `pyoxidizer init-config-file .` followed by `pyoxidizer run`, using PyOxidizer 0.22.0. Inspect the generated `pyoxidizer.bzl` around line 283 and the Rust project build output, especially the `no bin target named .` error. Done means the generated default project runs without the `PYOXIDIZER_PYTHON_EXECUTABLE` failure.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, rust
Domain
build-system, cli
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.