diff --git a/src/poetry/console/commands/init.py b/src/poetry/console/commands/init.py
index 48ea6e206ed..29919d931ab 100644
--- a/src/poetry/console/commands/init.py
+++ b/src/poetry/console/commands/init.py
@@ -11,6 +11,8 @@
from cleo.helpers import option
from packaging.utils import canonicalize_name
+from poetry.core.constraints.version import parse_constraint
+from poetry.core.constraints.version.exceptions import ParseConstraintError
from tomlkit import inline_table
from poetry.console.commands.command import Command
@@ -395,6 +397,14 @@ def _determine_requirements(
f"Using version {package_constraint} for"
f" {package}"
)
+ else:
+ try:
+ parse_constraint(package_constraint)
+ except ParseConstraintError:
+ self.line_error(
+ "Invalid version constraint. Please enter a valid version specifier."
+ )
+ continue
constraint["version"] = package_constraint
diff --git a/tests/console/commands/test_init.py b/tests/console/commands/test_init.py
index 3d12e3015c5..895c733b431 100644
--- a/tests/console/commands/test_init.py
+++ b/tests/console/commands/test_init.py
@@ -1215,3 +1215,38 @@ def test_init_does_not_add_readme_key_when_readme_missing(
# Assert
pyproject = (tmp_path / "pyproject.toml").read_text(encoding="utf-8")
assert "readme =" not in pyproject
+
+
+def test_interactive_rejects_invalid_version_constraint(
+ tester: CommandTester, repo: TestRepository
+) -> None:
+ repo.add_package(get_package("pendulum", "2.0.0"))
+
+ inputs = [
+ "my-package", # Package name
+ "1.0.0", # Version
+ "Desc", # Description
+ "n", # Author
+ "MIT", # License
+ ">=3.8", # Python
+ "", # Interactive packages
+ "pendulum", # Search package
+ "0", # Select first result
+ "isort", # INVALID version constraint
+ ">=2.0.0", # VALID version constraint
+ "", # Stop searching for packages
+ "", # Interactive dev packages
+ "",
+ "\n", # Generate
+ ]
+
+ tester.execute(inputs="\n".join(inputs))
+
+ output = tester.io.fetch_output()
+ error = tester.io.fetch_error()
+
+ # Must show validation error
+ assert "Invalid version constraint" in error
+
+ # Must use valid constraint
+ assert "pendulum (>=2.0.0" in output