mirror of
https://github.com/astral-sh/uv.git
synced 2025-11-02 04:48:18 +00:00
Allow execution of pyw files on Unix (#9759)
I don't see any real reason to forbid executing these in a
cross-platform way
```
❯ echo "print('hello world')" > test.pyw
❯ uv run test.pyw
error: Failed to spawn: `test.pyw`
Caused by: No such file or directory (os error 2)
❯ cargo run -q -- run test.pyw
hello world
```
Closes https://github.com/astral-sh/uv/issues/9757
This commit is contained in:
parent
341126cf72
commit
5e5635c142
2 changed files with 11 additions and 7 deletions
|
|
@ -1173,7 +1173,7 @@ pub(crate) enum RunCommand {
|
|||
/// Search `sys.path` for the named module and execute its contents as the `__main__` module.
|
||||
/// Equivalent to `python -m module`.
|
||||
PythonModule(OsString, Vec<OsString>),
|
||||
/// Execute a `pythonw` script (Windows only).
|
||||
/// Execute a `pythonw` GUI script.
|
||||
PythonGuiScript(PathBuf, Vec<OsString>),
|
||||
/// Execute a Python package containing a `__main__.py` file.
|
||||
PythonPackage(PathBuf, Vec<OsString>),
|
||||
|
|
@ -1201,7 +1201,13 @@ impl RunCommand {
|
|||
| Self::PythonRemote(..)
|
||||
| Self::Empty => Cow::Borrowed("python"),
|
||||
Self::PythonModule(..) => Cow::Borrowed("python -m"),
|
||||
Self::PythonGuiScript(..) => Cow::Borrowed("pythonw"),
|
||||
Self::PythonGuiScript(..) => {
|
||||
if cfg!(windows) {
|
||||
Cow::Borrowed("pythonw")
|
||||
} else {
|
||||
Cow::Borrowed("python")
|
||||
}
|
||||
}
|
||||
Self::PythonStdin(_) => Cow::Borrowed("python -c"),
|
||||
Self::External(executable, _) => executable.to_string_lossy(),
|
||||
}
|
||||
|
|
@ -1413,10 +1419,9 @@ impl RunCommand {
|
|||
&& is_file
|
||||
{
|
||||
Ok(Self::PythonScript(target_path, args.to_vec()))
|
||||
} else if cfg!(windows)
|
||||
&& target_path
|
||||
.extension()
|
||||
.is_some_and(|ext| ext.eq_ignore_ascii_case("pyw"))
|
||||
} else if target_path
|
||||
.extension()
|
||||
.is_some_and(|ext| ext.eq_ignore_ascii_case("pyw"))
|
||||
&& is_file
|
||||
{
|
||||
Ok(Self::PythonGuiScript(target_path, args.to_vec()))
|
||||
|
|
|
|||
|
|
@ -542,7 +542,6 @@ fn run_pep723_script_requires_python() -> Result<()> {
|
|||
|
||||
/// Run a `.pyw` script. The script should be executed with `pythonw.exe`.
|
||||
#[test]
|
||||
#[cfg(windows)]
|
||||
fn run_pythonw_script() -> Result<()> {
|
||||
let context = TestContext::new("3.12");
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue