Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

base_python configuration not working as expected #167

Open
schlamar opened this issue Feb 4, 2025 · 1 comment
Open

base_python configuration not working as expected #167

schlamar opened this issue Feb 4, 2025 · 1 comment
Labels
bug Something isn't working help wanted Extra attention is needed

Comments

@schlamar
Copy link

schlamar commented Feb 4, 2025

Issue

base_python configuration does not work as expected. I would expect that either uv configuration or virtualenv configuration will be respected. But both does not really work.

See also tox-dev/tox#1149 (comment)

Environment

Provide at least:

  • OS: Windows
Output of pip list of the host Python, where tox is installed
> pip list
Package      Version
------------ -------
argcomplete  3.4.0
click        8.1.7
colorama     0.4.6
packaging    24.1
pip          24.2
pipx         1.7.1
platformdirs 4.2.2
pycparser    2.22
setuptools   65.5.0
tomli        2.0.1
userpath     1.9.2

Output of running tox

Output of tox -rvv
> tox -rvv
ROOT: No tox.ini or setup.cfg or pyproject.toml found, assuming empty tox.ini at C:\Users\schlaich\pipx\venvs\tox
py: 402 I find interpreter for spec PythonSpec(path=C:\Users\schlaich\pipx\venvs\tox\Scripts\python.exe) [virtualenv\discovery\builtin.py:72]
py: 405 D filesystem is not case-sensitive [virtualenv\info.py:25]
py: 411 D got python info of %s from (WindowsPath('C:/Users/schlaich/AppData/Local/Programs/Python/Python310/python.exe'), WindowsPath('C:/Users/schlaich/AppData/Local/pypa/virtualenv/py_info/1/d6cff84b2a67723aae138c6278803b2828c3efccb4e78b3821870703e182d467.json')) [virtualenv\app_data\via_disk_folder.py:131]
py: 413 I proposed PythonInfo(spec=CPython3.10.11.final.0-64, system=C:\Users\schlaich\AppData\Local\Programs\Python\Python310\python.exe, exe=C:\Users\schlaich\pipx\venvs\tox\Scripts\python.exe, platform=win32, version='3.10.11 (tags/v3.10.11:7d4cc5a, Apr  5 2023, 00:38:17) [MSC v.1929 64 bit (AMD64)]', encoding_fs_io=utf-8-cp1252) [virtualenv\discovery\builtin.py:79]
py: 414 D accepted PythonInfo(spec=CPython3.10.11.final.0-64, system=C:\Users\schlaich\AppData\Local\Programs\Python\Python310\python.exe, exe=C:\Users\schlaich\pipx\venvs\tox\Scripts\python.exe, platform=win32, version='3.10.11 (tags/v3.10.11:7d4cc5a, Apr  5 2023, 00:38:17) [MSC v.1929 64 bit (AMD64)]', encoding_fs_io=utf-8-cp1252) [virtualenv\discovery\builtin.py:81]
py: 417 D symlink on filesystem does not work [virtualenv\info.py:44]
py: 481 I create virtual environment via CPython3Windows(dest=C:\Users\schlaich\pipx\venvs\tox\.tox\py, clear=False, no_vcs_ignore=False, global=False) [virtualenv\run\session.py:50]
py: 482 D create folder C:\Users\schlaich\pipx\venvs\tox\.tox\py\Lib\site-packages [virtualenv\util\path\_sync.py:12]
py: 484 D create folder C:\Users\schlaich\pipx\venvs\tox\.tox\py\Scripts [virtualenv\util\path\_sync.py:12]
py: 484 D write C:\Users\schlaich\pipx\venvs\tox\.tox\py\pyvenv.cfg [virtualenv\create\pyenv_cfg.py:33]
py: 485 D       home = C:\Users\schlaich\AppData\Local\Programs\Python\Python310 [virtualenv\create\pyenv_cfg.py:38]
py: 485 D       implementation = CPython [virtualenv\create\pyenv_cfg.py:38]
py: 486 D       version_info = 3.10.11.final.0 [virtualenv\create\pyenv_cfg.py:38]
py: 487 D       virtualenv = 20.26.3 [virtualenv\create\pyenv_cfg.py:38]
py: 487 D       include-system-site-packages = false [virtualenv\create\pyenv_cfg.py:38]
py: 488 D       base-prefix = C:\Users\schlaich\AppData\Local\Programs\Python\Python310 [virtualenv\create\pyenv_cfg.py:38]
py: 488 D       base-exec-prefix = C:\Users\schlaich\AppData\Local\Programs\Python\Python310 [virtualenv\create\pyenv_cfg.py:38]
py: 489 D       base-executable = C:\Users\schlaich\AppData\Local\Programs\Python\Python310\python.exe [virtualenv\create\pyenv_cfg.py:38]
py: 490 D copy C:\Users\schlaich\AppData\Local\Programs\Python\Python310\Lib\venv\scripts\nt\python.exe to C:\Users\schlaich\pipx\venvs\tox\.tox\py\Scripts\python.exe [virtualenv\util\path\_sync.py:40]
py: 493 D copy C:\Users\schlaich\AppData\Local\Programs\Python\Python310\Lib\venv\scripts\nt\pythonw.exe to C:\Users\schlaich\pipx\venvs\tox\.tox\py\Scripts\pythonw.exe [virtualenv\util\path\_sync.py:40]
py: 505 D create virtualenv import hook file C:\Users\schlaich\pipx\venvs\tox\.tox\py\Lib\site-packages\_virtualenv.pth [virtualenv\create\via_global_ref\api.py:91]
py: 506 D create C:\Users\schlaich\pipx\venvs\tox\.tox\py\Lib\site-packages\_virtualenv.py [virtualenv\create\via_global_ref\api.py:94]
py: 509 D ============================== target debug ============================== [virtualenv\run\session.py:52]
py: 518 D debug via 'C:\Users\schlaich\pipx\venvs\tox\.tox\py\Scripts\python.exe' 'C:\Users\schlaich\pipx\venvs\tox\lib\site-packages\virtualenv\create\debug.py' [virtualenv\create\creator.py:200]
py: 518 D {
  "sys": {
    "executable": "C:\\Users\\schlaich\\pipx\\venvs\\tox\\.tox\\py\\Scripts\\python.exe",
    "_base_executable": "C:\\Users\\schlaich\\AppData\\Local\\Programs\\Python\\Python310\\python.exe",
    "prefix": "C:\\Users\\schlaich\\pipx\\venvs\\tox\\.tox\\py",
    "base_prefix": "C:\\Users\\schlaich\\AppData\\Local\\Programs\\Python\\Python310",
    "real_prefix": null,
    "exec_prefix": "C:\\Users\\schlaich\\pipx\\venvs\\tox\\.tox\\py",
    "base_exec_prefix": "C:\\Users\\schlaich\\AppData\\Local\\Programs\\Python\\Python310",
    "path": [
      "C:\\Users\\schlaich\\AppData\\Local\\Programs\\Python\\Python310\\python310.zip",
      "C:\\Users\\schlaich\\AppData\\Local\\Programs\\Python\\Python310\\DLLs",
      "C:\\Users\\schlaich\\AppData\\Local\\Programs\\Python\\Python310\\lib",
      "C:\\Users\\schlaich\\AppData\\Local\\Programs\\Python\\Python310",
      "C:\\Users\\schlaich\\pipx\\venvs\\tox\\.tox\\py",
      "C:\\Users\\schlaich\\pipx\\venvs\\tox\\.tox\\py\\lib\\site-packages"
    ],
    "meta_path": [
      "<class '_virtualenv._Finder'>",
      "<class '_frozen_importlib.BuiltinImporter'>",
      "<class '_frozen_importlib.FrozenImporter'>",
      "<class '_frozen_importlib_external.PathFinder'>"
    ],
    "fs_encoding": "utf-8",
    "io_encoding": "cp1252"
  },
  "version": "3.10.11 (tags/v3.10.11:7d4cc5a, Apr  5 2023, 00:38:17) [MSC v.1929 64 bit (AMD64)]",
  "makefile_filename": "C:\\Users\\schlaich\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\config\\Makefile",
  "os": "<module 'os' from 'C:\\\\Users\\\\schlaich\\\\AppData\\\\Local\\\\Programs\\\\Python\\\\Python310\\\\lib\\\\os.py'>",
  "site": "<module 'site' from 'C:\\\\Users\\\\schlaich\\\\AppData\\\\Local\\\\Programs\\\\Python\\\\Python310\\\\lib\\\\site.py'>",
  "datetime": "<module 'datetime' from 'C:\\\\Users\\\\schlaich\\\\AppData\\\\Local\\\\Programs\\\\Python\\\\Python310\\\\lib\\\\datetime.py'>",
  "math": "<module 'math' (built-in)>",
  "json": "<module 'json' from 'C:\\\\Users\\\\schlaich\\\\AppData\\\\Local\\\\Programs\\\\Python\\\\Python310\\\\lib\\\\json\\\\__init__.py'>"
} [virtualenv\run\session.py:53]
py: 854 I add seed packages via FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=C:\Users\schlaich\AppData\Local\pypa\virtualenv) [virtualenv\run\session.py:57]
py: 872 D install pip from wheel C:\Users\schlaich\pipx\venvs\tox\lib\site-packages\virtualenv\seed\wheels\embed\pip-24.1-py3-none-any.whl via CopyPipInstall [virtualenv\seed\embed\via_app_data\via_app_data.py:49]
py: 874 D install setuptools from wheel C:\Users\schlaich\pipx\venvs\tox\lib\site-packages\virtualenv\seed\wheels\embed\setuptools-70.1.0-py3-none-any.whl via CopyPipInstall [virtualenv\seed\embed\via_app_data\via_app_data.py:49]
py: 875 D install wheel from wheel C:\Users\schlaich\pipx\venvs\tox\lib\site-packages\virtualenv\seed\wheels\embed\wheel-0.43.0-py3-none-any.whl via CopyPipInstall [virtualenv\seed\embed\via_app_data\via_app_data.py:49]
py: 880 D copy directory C:\Users\schlaich\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\pip-24.1-py3-none-any\pip to C:\Users\schlaich\pipx\venvs\tox\.tox\py\Lib\site-packages\pip [virtualenv\util\path\_sync.py:40]
py: 881 D copy C:\Users\schlaich\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\setuptools-70.1.0-py3-none-any\distutils-precedence.pth to C:\Users\schlaich\pipx\venvs\tox\.tox\py\Lib\site-packages\distutils-precedence.pth [virtualenv\util\path\_sync.py:40]
py: 882 D copy directory C:\Users\schlaich\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\wheel-0.43.0-py3-none-any\wheel to C:\Users\schlaich\pipx\venvs\tox\.tox\py\Lib\site-packages\wheel [virtualenv\util\path\_sync.py:40]
py: 884 D copy directory C:\Users\schlaich\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\setuptools-70.1.0-py3-none-any\pkg_resources to C:\Users\schlaich\pipx\venvs\tox\.tox\py\Lib\site-packages\pkg_resources [virtualenv\util\path\_sync.py:40]
py: 937 D copy directory C:\Users\schlaich\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\wheel-0.43.0-py3-none-any\wheel-0.43.0.dist-info to C:\Users\schlaich\pipx\venvs\tox\.tox\py\Lib\site-packages\wheel-0.43.0.dist-info [virtualenv\util\path\_sync.py:40]
py: 947 D copy C:\Users\schlaich\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\wheel-0.43.0-py3-none-any\wheel-0.43.0.virtualenv to C:\Users\schlaich\pipx\venvs\tox\.tox\py\Lib\site-packages\wheel-0.43.0.virtualenv [virtualenv\util\path\_sync.py:40]
py: 955 D generated console scripts wheel-3.10.exe wheel3.exe wheel.exe wheel3.10.exe [virtualenv\seed\embed\via_app_data\pip_install\base.py:43]
py: 980 D copy directory C:\Users\schlaich\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\setuptools-70.1.0-py3-none-any\setuptools to C:\Users\schlaich\pipx\venvs\tox\.tox\py\Lib\site-packages\setuptools [virtualenv\util\path\_sync.py:40]
py: 1282 D copy directory C:\Users\schlaich\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\setuptools-70.1.0-py3-none-any\setuptools-70.1.0.dist-info to C:\Users\schlaich\pipx\venvs\tox\.tox\py\Lib\site-packages\setuptools-70.1.0.dist-info [virtualenv\util\path\_sync.py:40]
py: 1293 D copy C:\Users\schlaich\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\setuptools-70.1.0-py3-none-any\setuptools-70.1.0.virtualenv to C:\Users\schlaich\pipx\venvs\tox\.tox\py\Lib\site-packages\setuptools-70.1.0.virtualenv [virtualenv\util\path\_sync.py:40]
py: 1297 D copy directory C:\Users\schlaich\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\setuptools-70.1.0-py3-none-any\_distutils_hack to C:\Users\schlaich\pipx\venvs\tox\.tox\py\Lib\site-packages\_distutils_hack [virtualenv\util\path\_sync.py:40]
py: 1301 D generated console scripts  [virtualenv\seed\embed\via_app_data\pip_install\base.py:43]
py: 1530 D copy directory C:\Users\schlaich\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\pip-24.1-py3-none-any\pip-24.1.dist-info to C:\Users\schlaich\pipx\venvs\tox\.tox\py\Lib\site-packages\pip-24.1.dist-info [virtualenv\util\path\_sync.py:40]
py: 1542 D copy C:\Users\schlaich\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\pip-24.1-py3-none-any\pip-24.1.virtualenv to C:\Users\schlaich\pipx\venvs\tox\.tox\py\Lib\site-packages\pip-24.1.virtualenv [virtualenv\util\path\_sync.py:40]
py: 1550 D generated console scripts pip3.exe pip-3.10.exe pip3.10.exe pip.exe [virtualenv\seed\embed\via_app_data\pip_install\base.py:43]
py: 1552 I add activators for Bash, Batch, Fish, Nushell, PowerShell, Python [virtualenv\run\session.py:63]
py: 1562 D write C:\Users\schlaich\pipx\venvs\tox\.tox\py\pyvenv.cfg [virtualenv\create\pyenv_cfg.py:33]
py: 1565 D      home = C:\Users\schlaich\AppData\Local\Programs\Python\Python310 [virtualenv\create\pyenv_cfg.py:38]
py: 1568 D      implementation = CPython [virtualenv\create\pyenv_cfg.py:38]
py: 1570 D      version_info = 3.10.11.final.0 [virtualenv\create\pyenv_cfg.py:38]
py: 1572 D      virtualenv = 20.26.3 [virtualenv\create\pyenv_cfg.py:38]
py: 1574 D      include-system-site-packages = false [virtualenv\create\pyenv_cfg.py:38]
py: 1574 D      base-prefix = C:\Users\schlaich\AppData\Local\Programs\Python\Python310 [virtualenv\create\pyenv_cfg.py:38]
py: 1575 D      base-exec-prefix = C:\Users\schlaich\AppData\Local\Programs\Python\Python310 [virtualenv\create\pyenv_cfg.py:38]
py: 1575 D      base-executable = C:\Users\schlaich\AppData\Local\Programs\Python\Python310\python.exe [virtualenv\create\pyenv_cfg.py:38]
  py: OK (1.19 seconds)
  congratulations :) (1.30 seconds)

Minimal example

uv configuration 64bit

Setting is ignored

[tox]
requires =
    tox>=4.22
    tox-uv
skipsdist = True

[testenv:dev]
base_python = cpython-3.11-windows-x86_64-none
> tox devenv -e dev .venv
dev: venv> .tox\.tox\Scripts\uv.exe venv -p cpython ...
> .\.venv\Scripts\python -c "import sys;print(sys.version_info);import platform;print(platform.architecture())"
sys.version_info(major=3, minor=10, micro=11, releaselevel='final', serial=0)
('64bit', 'WindowsPE')

uv configuration 32bit

[tox]
requires =
    tox>=4.22
    tox-uv
skipsdist = True

[testenv:dev]
base_python = cpython-3.10-windows-x86-none
> tox devenv -e dev .venv
(dev: venv> .tox\.tox\Scripts\uv.exe venv -p cpython ...
> .\
> .\.venv\Scripts\python -c "import sys;print(sys.version_info);import platform;print(platform.architecture())"
sys.version_info(major=3, minor=10, micro=11, releaselevel='final', serial=0)
('64bit', 'WindowsPE')

uv configuration in base

[tox]
requires =
    tox>=4.22
    tox-uv
skipsdist = True

[testenv]
base_python = cpython-3.10-windows-x86-none

[testenv:dev]
> tox devenv -e dev .venv
dev: venv> .tox\.tox\Scripts\uv.exe venv -p cpython ...
> .\.venv\Scripts\python -c "import sys;print(sys.version_info);import platform;print(platform.architecture())"
sys.version_info(major=3, minor=10, micro=11, releaselevel='final', serial=0)
('64bit', 'WindowsPE')

virtualenv configuration 32bit

This selects the correct Python version, but ignores 32bit setting.

[tox]
requires =
    tox>=4.22
    tox-uv
skipsdist = True

[testenv:dev]
base_python = python3.11-32
> tox devenv -e dev .venv
dev: venv> .tox\.tox\Scripts\uv.exe venv -p cpython3.11 ...
> .\.venv\Scripts\python -c "import sys;print(sys.version_info);import platform;print(platform.architecture())"
sys.version_info(major=3, minor=11, micro=9, releaselevel='final', serial=0)
('64bit', 'WindowsPE')

virtualenv configuration 32bit without tox-uv

This works as expected

[tox]
requires =
    tox>=4.22
skipsdist = True

[testenv:dev]
base_python = python3.11-32
> tox devenv -e dev .venv
 ...
> .\.venv\Scripts\python -c "import sys;print(sys.version_info);import platform;print(platform.architecture())"
sys.version_info(major=3, minor=11, micro=9, releaselevel='final', serial=0)
('32bit', 'WindowsPE')
@schlamar schlamar added the bug Something isn't working label Feb 4, 2025
@gaborbernat
Copy link
Member

gaborbernat commented Feb 4, 2025

PR welcome, one needs to fix this inside https://github.com/tox-dev/tox-uv/blob/main/src/tox_uv/_venv.py#L1. The virtualenv configuration is the one that should work.

@gaborbernat gaborbernat added the help wanted Extra attention is needed label Feb 4, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants