Virtual Python Environment builder

Overview
Comments
  • Rewrite virtualenv

    Rewrite virtualenv

    This Pull Request was previously #691 however I've moved the rewrite branch to pypa/virtualenv to make it more official.

    This is a major change to the virtualenv code base, and as thus I want to get some sign off and opinions from the other @pypa/virtualenv-developers. I don't consider this idea a forgone conclusion without input from the other core developers.

    This rewrites the entirety of virtualenv, this is a "dangerous" thing to do which risks breaking things that have been working and generally complete rewrites are considered a bad idea. However while attempting to fix errors like #694, #671, #666, #650, #672, #687, #674, #648, etc I ran into situation where I believe it's not feasible to fix all of the issues with virtualenv given the current methods it employs. In particular I believe that the way -p is implemented makes it extremely fragile if not impossible to work accurately in all situations.

    In particular I believe there are a number of issues, most of which stem from architectural issues with virtualenv itself. The (incomplete) list of issues are:

    • The -p functionality to restart the script, which is likely installed into one Python's site-packages directory, seems to be fundamentally flawed in a way where it's not reasonable to fix it in all situations.
    • The previous code relied on a number of hacks in order to implement isolation. This comes from a time when Python had no first class support for isolation and the only way to do it was to implement hacks. This also forces us to maintain a different set of hacks for each target interpreter and sometimes different hacks for different interpreters for different platforms. However since Python 3.3 Python itself has a virtualenv like module called venv. While I do not believe that venv is (or should) be a complete replacement for virtualenv, I do believe that the underlying isolation mechanism is likely to be far more robust given that it comes from the interpreter itself. This also pushes the maintenance burden of implementing the isolation to the people best able to control what the interpreter does.
    • The code is extremely hard to read, it is not well factored and over time it's only grown more unwieldy and more gnarly.
    • Over time the code has grown more and more hacks to solve specific problems. A lot of these hacks are not documented or commented at all and it's extremely difficult to determine which hacks apply any longer or which are no longer required.
    • There is almost a non existent test suite. I have wanted to attempt to write a test suite previously however the way the code is structured it makes it extremely difficult to actually write tests.
    • The virtualenv.py module attempts to run as a single file, however it can't actually do that because it requires the virtualenv_support directory to exist alongside it. I believe that it's saner and easier to have a single directory virtualenv/ directory which contains everything that needs to exist for an install to work. This also removes giant base64 encoded blobs from needing to be maintained inside of the virtualenv.py file.
    • The current means of isolation relies on installing a custom patched site.py that we maintain inside of virtualenv. However this site.py misses features from later versions of Python which means that there are subtle differences in how Python behaves from within a virtual environment and without.

    In contrast the rewrite is structured in a different way.

    In order to still support the -p option without needing to implement the hackish "restart in target interpreter" logic, the rewrite instead (for the "legacy" isolation method) inspects the target environment for any values it needs. It does this by running a subprocess which will shove all of the required values into a dictionary, and then dump that as json. When the virtualenv script pulls these values out it then loads the json and then has all of the values it needs in order to construct the virtual environment without needing to execute itself with the target interpreter.

    Given that newer versions of Python has built in isolation the rewrite wants to take advantage of that. It will detect if the target Python has the venv module, and if they do it will execute a short script (via -c) that will do the actual creation of the virtual environment (without any scripts or tools installed). This will also allow alternative implementations (like PyPy) to implement the isolation themselves so that they can ensure that isolation works correctly in their interpreter without needing to maintain a set of instructions inside of virtualenv for handling their interpreter.

    The rewrite also attempts to start fresh with none of the additional hacks. This will mean that we'll likely be broken in certain situations and we'll need to determine how the old virtualenv solved that problem and reapply any additional hacks. However this time we can hopefully ensure that we document/comment what those hacks are and why we're doing it. We'll also ideally write a good set of tests for those hacks so that if we ever remove them in the future we'll have a test suite that will tell us if we broke anything by removing them. Another benefit is that since the hacks are (almost?) always related to the legacy isolation mechanism they can all be quarantined to the virtualenv.builders.legacy.LegacyBuilder class instead of leaking all over the code base.

    The new code base is also implemented in a much more modular way. Instead of a ball of spaghetti where the implementation of isolation is spread all over the place, the new code uses "Builder" classes which handle creating the actual environments. In addition (thanks to @ionelmc) it utilizes a "flavor" system which abstracts away the differences between Windows and Posix in the builder code.

    In addition to the better (imo) layout of the code base, the new code base is also going to mandate that there is 100% unit test coverage at all times. This will help ensure that we continue to work through refactoring and the like in the future.

    No matter which isolation method is in use, virtualenv itself will install it's own scripts and install it's own tools (pip and setuptools). This is so we can have consistent scripts and tool versions no matter which isolation mechanism is in play. It also makes it easier to get newer versions of the tooling and scripts without requiring people to update their entire Python interpreter. In other words if the venv isolation mechanism is available, we will only use it to create the isolated environment and nothing else.

    The high level overview of what the major differences in capabilities are:

    • --relocatable no longer is supported as it never worked very well and I don't believe it's possible to actually make it work in all cases. It appears the major use case for this is to avoid re-compiling software, for which I believe Wheels are a better solution.
    • The virtual environment always contains copies instead of attempting to use symlink. The new site.py file in the rewrite allows us to copy a lot less files over than previously required. Almost the entire size of an empty virtual environment in the new rewrite is the executable files, which are required to be copied no matter what.
    • Support a clean and simple API for using virtualenv instead of the hackish bootstrap script method that the previous versions used to use.
    • The deprecated --distribute option is gone.
    • The --no-pip and --no-setuptools options now operate independently of each other. In addition there are now --setuptools and --pip options which will negate the --no-* options if they were given previously.
    • Instead of sys.real_prefix we have sys.base_prefix and sys.base_exec_prefix in order to match what the venv module does.
    • The new code base is tested on Windows using Appveyor.
    • The new code drops the virtualenv-X.Y entry points which didn't work correctly with Wheel anyways and are unneeded since it doesn't really matter what version of Python virtualenv is installed with.
    • The new code only uses setuptools in its setup.py and will always use the script wrappers in that situation.

    That major things left to do are:

    • [ ] Write all of the unit tests (mostly done).
    • [ ] Write all of the functional tests.
    • [ ] Ensure/fix the legacy isolation mechanism on PyPy (Jython and IronPython too maybe?).
    • [ ] Fix virtualenv-in-virtualenv (including for environments created pre-rewrite) so that it correctly uses the "real" Python.
    • [ ] Update the documentation to match the state of the repository now.

    There is an open question about how best to handle the transition. If we just merge this and release it then we risk regressing behavior for a lot of people since this is essentially brand new untested code. In the previous Pull Request @ncoghlan suggested releasing it on PyPI as something like virtualenv-rewrite for a period of time and asking people to switch to using that instead. I think that's a good idea and that's how I would plan the migration to go I think.

    Summary of outstanding issues that get fixed/closed:

    • Closes #694 - Cannot create virtualenv after upgrading OS X 10.6.8 Python to 2.7.
    • Closes #692 - virtualenv-2.7 no longer exists.
    • Closes #671 - virtualenv -p python3.4 fails with ImportError: No module named 'copy_reg'
    • Closes #666 - virtualenv 1.11.6 not working with pypy 2.4 and pypy3 2.4
    • Closes #659 - Installing a virtualenv doesn't link pyc files.
    • Closes #656 - bootstrap -> No module named pip
    • Closes #654 - --always-copy flag doesn't copy
    • Closes #640 - The executable python does not exist
    • Closes #626 - tests not included in tarballs on pypi
    • Closes #625 - ImportError for Python3
    • Closes #622 - 1.11.6 creates right shebang but wrong file name
    • Closes #617 - Skip "fix_local_scheme" for "virtualenv ."? (symlinks all files)
    • Closes #615 - Problem with symlinked paths
    • Closes #605 - option always-copy doesn't work with OOTB CentOS 6.5
    • Closes #587 - Python2.7 site.py Not Properly Symlinked
    • Closes #586 - virtualenv wheel's entry-point script is version specific to the python its built with
    • Closes #576 - ImportError: No module named optparse.
    • Closes #571 - site.getsitepackages() doesn't exist in virtualenv
    • Closes #565 - Breakage in --always-copy - fails with: ImportError: No module named time
    • Closes #560 - The tests/ directory is not included in the tarball.
    • Closes #558 - Make --relocatable even more relocatable
    • Closes #557 - --system-site-packages fails if PIP_REQUIRE_VIRTUALENV=true
    • Closes #555 - DeprecationWarning
    • Closes #530 - test_always_copy_option() fails
    • Closes #500 - add in a test framework similar to pip
    • Closes #464 - Why I read « Helper script to rebuild virtualenv.py from virtualenv_support » in comment but the code don't use virtualenv_support folder content ?
    • Closes #434 - Missing site.get*() methods on 3.2 and later
    • Closes #414 - Review the use of "embedded binary blobs" for support scripts
    • Closes #405 - need test to confirm rebuild-script.py has been run
    • Closes #368 - Consolidate the test suite
    • Closes #355 - site.py not compatible with python 2.7
    • Closes #340 - Generated bootstrap script's install_pip isn't specific enough
    • Closes #319 - AssertionError while creating virtualenv on windows 7
    • Closes #286 - Add code comment re: base64-encoded code in virtualenv.py
    • Closes #204 - --relocatable doesn't work with PyPy
    • Closes #172 - virtualenv's main should take arguments
    • Closes #125 - Improved support for --exec-prefix
    • Closes #90 - --relocatable is not reliable
    • Closes #11 - --relocatable does not point activate script to the correct path
    • Closes #2 - --clear doesn't clear out bin/

    Summary of outstanding pull requests that get fixed/closed:

    • Closes #686 - Document when --always-copy was introduced (in PR #409)
    • Closes #672 - Avoid sys.path pollution when switching interpreters
    • Closes #663 - Autodetect if symlinks are supported on target file system
    • Closes #657 - Add a note, that bootstrap script can't install pip.
    • Closes #647 - Fix formating of activate_this.py
    • Closes #638 - Split out this setup.py fix from https://github.com/pypa/virtualenv/pull/635
    • Closes #636 - Fix to better support python installs where prefix != exec_prefix.
    • Closes #634 - A collection of fixes for when prefix != exec_prefix.
    • Closes #597 - [WIP] Do some testing
    • Closes #561 - Add the tests/ directory to the tarball.
    • Closes #547 - Use decorator to classmethod.
    • Closes #544 - Source distributions should include tests
    • Closes #508 - Add getsitepackages() to site module (Issue #355)
    • Closes #485 - Simplify setting up symlinks/copying files
    • Closes #479 - Making activate.bat relocatable.
    • Closes #473 - Relative local symlinks
    • Closes #389 - Made make_relative_path handle symlinks correctly.
    • Closes #236 - relocatable activate for bash, dash, zsh, ksh, fish, Windows

    I am pretty sure that this fixes more issues and pull requests than I've listed here. However I don't feel like going through every single issue and determining which ones are still valid when they would require me to actually attempt to reproduce the issues instead of simply looking at the issue and determining if the new code can handle that situation.

    opened by dstufft 71
  • Whitespace in root path of virtualenv breaks scripts

    Whitespace in root path of virtualenv breaks scripts

    I'm not really sure if this is a distribute/setuptools/virtualenv but,

    If I install virtualenv in

    /var/lib/hudson/home/jobs/Minification WebHelpers/workspace/python/2.4

    then run ./bin/easy_install:

    bash: ./bin/easy_install: "/var/lib/hudson/home/jobs/Minification: bad interpreter: No such file or directory

    Seems like something does not obey whitespace in path names correctly.


    • Bitbucket: https://bitbucket.org/ianb/virtualenv/issue/38
    • Originally Reported By: Domen Kožar
    • Originally Created At: 2010-05-07 14:57:32
    bug 
    opened by vbabiy 59
  • Can't install any package via `pip` on windows 10, ssl module in Python is not available

    Can't install any package via `pip` on windows 10, ssl module in Python is not available

    python version: 3.6 (Intel Distribution for Python for Windows 2018 update 1) virtualenv version: 15.1.0 windows version: windows 10 pro, build 17101.rs4_release.180211-1040

    I executed only 2 commands, here is what Powershell output:

    PS E:\Python\Virtualenv\Scripts> .\activate
    (Virtualenv) PS E:\Python\Virtualenv\Scripts> pip install numpy
    pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
    Collecting numpy
      Could not fetch URL https://pypi.python.org/simple/numpy/: There was a problem confirming the ssl certificate: Can't connect to HTTPS URL because the SSL module is not available. - skipping
      Could not find a version that satisfies the requirement numpy (from versions: )
    No matching distribution found for numpy
    

    This directory Python is not where the python installed, it is only a normal directory.

    I have tried installing some standalone openssl, like the one from here, but neither of them worked.

    opened by liurui39660 54
  • Nushell activation scripts

    Nushell activation scripts

    Hi all,

    I'm including a brand new activation script for nushell. I think I've got the base structure but I was wondering if someone could help me set up some things.

    • The first issue is that because of the nature of nushell, a deactivation function cannot be created. In order to deactivate an environment we will need to source a deactivate script (included with this PR). How can I check that that file is created together with the activate.nu file?
    • Can someone help me set up the tests for activating the scripts for nushell?
    opened by elferherrera 52
  • Unable to create vrtualenv with 1.11 (when virtualenv installed by ez_install/setuptools)

    Unable to create vrtualenv with 1.11 (when virtualenv installed by ez_install/setuptools)

    # virtualenv /tmp/123
    Overwriting /tmp/123/lib/python2.7/site.py with new content
    New python executable in /tmp/123/bin/python
    Installing setuptools, pip...
      Complete output from command /tmp/123/bin/python -c "import sys, pip; pip...ll\"] + sys.argv[1:])" setuptools pip:
      Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/usr/local/lib/python2.7/dist-packages/virtualenv-1.11-py2.7.egg/virtualenv_support/pip-1.5-py2.py3-none-any.whl/pip/__init__.py", line 9, in <module>
      File "/usr/local/lib/python2.7/dist-packages/virtualenv-1.11-py2.7.egg/virtualenv_support/pip-1.5-py2.py3-none-any.whl/pip/log.py", line 8, in <module>
      File "/usr/local/lib/python2.7/dist-packages/virtualenv-1.11-py2.7.egg/virtualenv_support/setuptools-2.0.2-py2.py3-none-any.whl/pkg_resources.py", line 2696, in <module>
        def _dep_map(self):
      File "/usr/local/lib/python2.7/dist-packages/virtualenv-1.11-py2.7.egg/virtualenv_support/setuptools-2.0.2-py2.py3-none-any.whl/pkg_resources.py", line 429, in __init__
        def get_resource_stream(manager, resource_name):
      File "/usr/local/lib/python2.7/dist-packages/virtualenv-1.11-py2.7.egg/virtualenv_support/setuptools-2.0.2-py2.py3-none-any.whl/pkg_resources.py", line 443, in add_entry
        """Is the named resource a directory?  (like ``os.path.isdir()``)"""
      File "/usr/local/lib/python2.7/dist-packages/virtualenv-1.11-py2.7.egg/virtualenv_support/setuptools-2.0.2-py2.py3-none-any.whl/pkg_resources.py", line 1722, in find_in_zip
        except AttributeError:
      File "/usr/local/lib/python2.7/dist-packages/virtualenv-1.11-py2.7.egg/virtualenv_support/setuptools-2.0.2-py2.py3-none-any.whl/pkg_resources.py", line 1298, in has_metadata
        def test(nodelist):
      File "/usr/local/lib/python2.7/dist-packages/virtualenv-1.11-py2.7.egg/virtualenv_support/setuptools-2.0.2-py2.py3-none-any.whl/pkg_resources.py", line 1614, in _has
        def _parts(self,zip_path):
      File "/usr/local/lib/python2.7/dist-packages/virtualenv-1.11-py2.7.egg/virtualenv_support/setuptools-2.0.2-py2.py3-none-any.whl/pkg_resources.py", line 1488, in _zipinfo_name
        "Can't perform this operation for loaders without 'get_data()'"
    AssertionError: /usr/local/lib/python2.7/dist-packages/virtualenv-1.11-py2.7.egg/EGG-INFO/PKG-INFO is not a subpath of /usr/local/lib/python2.7/dist-packages/virtualenv-1.11-py2.7.egg/virtualenv_support/setuptools-2.0.2-py2.py3-none-any.whl/
    ----------------------------------------
    ...Installing setuptools, pip...done.
    Traceback (most recent call last):
      File "/usr/bin/virtualenv", line 9, in <module>
        load_entry_point('virtualenv==1.11', 'console_scripts', 'virtualenv')()
      File "/usr/local/lib/python2.7/dist-packages/virtualenv-1.11-py2.7.egg/virtualenv.py", line 820, in main
        symlink=options.symlink)
      File "/usr/local/lib/python2.7/dist-packages/virtualenv-1.11-py2.7.egg/virtualenv.py", line 988, in create_environment
        install_wheel(to_install, py_executable, search_dirs)
      File "/usr/local/lib/python2.7/dist-packages/virtualenv-1.11-py2.7.egg/virtualenv.py", line 956, in install_wheel
        'PIP_NO_INDEX': '1'
      File "/usr/local/lib/python2.7/dist-packages/virtualenv-1.11-py2.7.egg/virtualenv.py", line 898, in call_subprocess
        % (cmd_desc, proc.returncode))
    OSError: Command /tmp/123/bin/python -c "import sys, pip; pip...ll\"] + sys.argv[1:])" setuptools pip failed with error code 1
    
    # python -V
    Python 2.7.3
    
    # pip freeze
    Cheetah==2.4.4
    GnuPGInterface==0.3.2
    Jinja2==2.6
    Landscape-Client==12.05
    M2Crypto==0.21.1
    MarkupSafe==0.15
    PAM==0.4.2
    PyYAML==3.10
    SaltTesting==0.5.5
    Twisted-Core==11.1.0
    apache-libcloud==0.13.3
    apt-xapian-index==0.44
    argparse==1.2.1
    boto==2.2.2
    chardet==2.0.1
    cloud-init==0.6.3
    command-not-found==0.2.44
    configobj==4.7.2
    coverage==3.7.1
    euca2ools==2.0.0
    httplib2==0.7.2
    keyring==0.9.2
    language-selector==0.1
    launchpadlib==1.9.12
    lazr.restfulclient==0.12.0
    lazr.uri==1.0.3
    mock==1.0.1
    msgpack-python==0.1.10
    oauth==1.0.1
    paramiko==1.7.7.1
    pyOpenSSL==0.12
    pycrypto==2.4.1
    pycurl==7.19.0
    pyserial==2.5
    python-apt==0.8.3ubuntu7.1
    python-debian==0.1.21ubuntu1
    pyzmq==13.0.0
    salt==2014.1.0-31-g0998b54
    simplejson==2.3.2
    timelib==0.2.4
    ufw==0.31.1-1
    unattended-upgrades==0.1
    unittest-xml-reporting==1.7.0
    virtualenv==1.11
    wadllib==1.3.0
    wsgiref==0.1.2
    zope.interface==3.6.1
    

    Is there any more info that I can provide?

    opened by s0undt3ch 48
  • framework build CPython macOs issues

    framework build CPython macOs issues

    Hi. I'm trying to create a Python 2 virtualenv on macOS Mojave and am running into an error.

    bagel$ pip3 install --user virtualenv
      <snipped>
      WARNING: The script virtualenv is installed in '/Users/bagel/Library/Python/3.7/bin' which is not on PATH.
      Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
    Successfully installed virtualenv-20.0.1
    
    bagel$ pip3 list
    Package            Version
    ------------------ -------
    appdirs            1.4.3  
    filelock           3.0.12 
    importlib-metadata 1.5.0  
    pip                19.3.1 
    setuptools         42.0.2 
    six                1.14.0 
    virtualenv         20.0.1 
    wheel              0.33.6 
    zipp               2.2.0  
    
    bagel$ which python2.7
    /usr/bin/python2.7
    
    bagel$ ~/Library/Python/3.7/bin/virtualenv -p python2.7 venv
    PermissionError: [Errno 1] Operation not permitted: '/Users/bagel/Documents/projects/test/venv/bin/python'
    

    It's worth noting that Python 2 is the system Python, while Python 3 is installed from Homebrew.

    bug help-wanted 
    opened by rpkilby 40
  • Matplotlib fails inside virtualenv

    Matplotlib fails inside virtualenv

    Matplotlib doesn't show the figure window from within a virtualenv. I've tried many combinations (e.g. intalling using pip, using easy_install, compiling from source, using --system-site-packages, different versions, etc.) with no luck. The test that makes me think is a virtualenv issue is that if I try to use my working system-wide matplotlib from virtualenv, I don't see a figure. In other words, if I run this:

    [~]$ python plotTest.py
    

    it works ok (shows the figure). Then, if I create a virtualenv with --system-site-packages and run the same script, it doesn't work. That is:

    [~]$ virtualenv --system-site-packages vEnv
    [~]$ source vEnv/bin/activate
    (vEnv)[~]$ python plotTest.py
    

    fails (it hangs and doesn't even return). I need to kill the process. Btw, the plotTest.py if the following:

    import matplotlib
    import matplotlib.pyplot as plt
    
    print "Backend: ", matplotlib.rcParams['backend']
    
    plt.plot([1,2,1])
    plt.show()
    

    FWIW, in both cases I do see the line printing MacOSX as the backend.

    opened by jorgehatccrma 39
  • [RFC] The next generation of virtualenv

    [RFC] The next generation of virtualenv

    Following the discussion in 1362 it became apparent that for virtualenv to be able to support the new world (Windows Store installs, venv interpreters) we need some major change of direction.

    Here's my proposal for going ahead with this project. This will be a major refactor for the project, that plans to keep existing interface compatibility though.

    Project goal

    • create a fresh copy of the system (invoker) python that has its own custom, separately controllable package list,
    • an interface and behaviour that's as much as possible consistent across all supported Python environments (e.g. backport new venv features to older interpreters),
    • extensible (both creation and shell activation script support wise),
    • PyPi package (ability to upgrade out of band with interpreter).

    Planned features

    • universal pypi wheel,

    • cross-platform - Windows, all UNIX flavours, MacOS.

    • support for most supported pythons, the initial pool of supported Python version: python2.7, python3.4, python3.5, python3.5, pypy3, pypy2 (hoping for IronPython and Jython at some point - any other ones we should support?)

    • A two year grace period of support: our interface will keep the interpreter support for two more years past its EOL: creating virtual environments is so basic that this package is the last one that should drop compatibility. During this transitional two years period, we guarantee bug fixes and compatibility. New feature support is a best effort though.

    • ability to specify the target python (we'll use PEP-514/PEP-394/explicit link to discover these versions) and create virtual environments even if that target does not have this package installed

    • prefer built-in venv: if the target python has venv we'll create the environment using that (and then perform subsequent operations on that to facilitate other guarantees we offer)

    • ability to provision seed packages (after the creation of the virtual environments this packages will be already installed):

      • we accept PEP-508 format,
      • ability to reach out to PyPi to get latest matching the spec, or offline only (such install packages must be offline)
      • by default pip, setuptools and wheel are the seed packages (these packages are also automatically injected as offline wheel packages)
    • interfaces:

      • CLI interface (python -m virtualenv, virtualenv)
      • wheel interface (env PYTHONPATH=/t/path/to/virtualenv.whl python -m virtualenv) - universal wheel,
      • zipapp interface,
      • API interface: import virtualenv; virtualenv.create("target")
    • shell support - activation/deactivation scripts and prompt environment variables - by default we generate:

      • bash / zsh,
      • csh,
      • fish,
      • powershell,
      • xonsh,
      • cmd,
      • python,
      • a well-defined API to install custom shell scripts (maybe as part of the plugin system).
    • three-layered configuration system, each option is determined as follows:

      • first, ini configuration support (a global ini config present in the users home),
      • second, environment variables having the VIRTUALENV_ prefix,
      • finally, command line options (argparse powered)
    • plugin system these are extension points the user can inject their own custom logic, and generate an extended version of virtualenv (current bootstrapping logic):

      • extend parser (add your own custom CLI flags),
      • adjust options (change options after CLI parse),
      • after install (perform some operation once the virtual environment creation is done)
    • virtualenv support - the operation should work even if the invoking python is a virtualenv created python,

    • venv support - the operation should work even if the invoking python is a virtualenv created python,

    • relocatable environments: an environment should keep working as long as the root python is not removed from the OS (e.g. renaming the root environment folder should not break things).

    Difference from stdlib venv

    How we differ from the standard library venv? The virtualenv package plans to be:

    • a PyPi package, as such will be more often upgraded, easier to keep up to date and offer feature parity across pythons,
    • built-in interpreter discovery and cross interpreter support,
    • more interfaces (zippapp, wheel, installed package),
    • easier customization - plugin system,
    • be the testing ground for new features (which down the line may make it into venv),
    • longer EOL.

    In general, offer features that other downstream tools (for example tox, pre-commit, pipenv, pipsi, pipx) who need virtual environments as an API would want.

    PyPy members (and the public please too) share your thoughts or plus one if you agree. @pfmoore @dstufft @di @pradyunsg @cjerdonek @ncoghlan @jaraco @techalchemy @uranusjr @pganssle @benoit-pierre @dholth @lkollar @takluyver @zooba

    opened by gaborbernat 37
  • why does virtualenv uses /usr/lib64/python2.7/ssl.py ?

    why does virtualenv uses /usr/lib64/python2.7/ssl.py ?

    Hi. I have a consistent problem with virtualenv. After upgrading python (specifically ssl module) on the "host", all my virtualenvs will have the same problem. Pip and all modules related to ssl module will not work anymore. My question is, why doesn't virtualenv make a snapshot of /usr/lib64/ssl.py ? that way at least pip will work and the user can upgrade his virtualenv packages.

    the exact error:

    import ssl
      File "/usr/lib64/python2.7/ssl.py", line 133, in <module>
        PROTOCOL_SSLv23 = PROTOCOL_TLS
    NameError: name 'PROTOCOL_TLS' is not defined
    
    opened by mosajjal 36
  • Scripts and bin in bad location

    Scripts and bin in bad location

    Reporting the same bug here on MacOS, only I'm highlighting the old vs new-unexpected behavior in a (hopefully) easy reproduction case:

    ./.test-venv/bin/pip list | grep virtualenv
    virtualenv         16.7.9
    ./.test-venv/bin/python -m virtualenv .mac-os-venv
    Using base prefix '/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7'
    New python executable in /Users/aegelhofer/.mac-os-venv/bin/python
    Installing setuptools, pip, wheel...
    done.
    ls ~/.mac-os-venv/bin/*
    /Users/aegelhofer/.mac-os-venv/bin/activate		/Users/aegelhofer/.mac-os-venv/bin/pip
    /Users/aegelhofer/.mac-os-venv/bin/activate.csh		/Users/aegelhofer/.mac-os-venv/bin/pip3
    /Users/aegelhofer/.mac-os-venv/bin/activate.fish	/Users/aegelhofer/.mac-os-venv/bin/pip3.7
    /Users/aegelhofer/.mac-os-venv/bin/activate.ps1		/Users/aegelhofer/.mac-os-venv/bin/python
    /Users/aegelhofer/.mac-os-venv/bin/activate.xsh		/Users/aegelhofer/.mac-os-venv/bin/python-config
    /Users/aegelhofer/.mac-os-venv/bin/activate_this.py	/Users/aegelhofer/.mac-os-venv/bin/python3
    /Users/aegelhofer/.mac-os-venv/bin/easy_install		/Users/aegelhofer/.mac-os-venv/bin/python3.7
    /Users/aegelhofer/.mac-os-venv/bin/easy_install-3.7	/Users/aegelhofer/.mac-os-venv/bin/wheel
    rm -rf .mac-os-venv
    ./.test-venv/bin/pip install -U virtualenv
    Looking in indexes:
     ...
    Requirement already satisfied, skipping upgrade: six<2,>=1.9.0 in ./.test-venv/lib/python3.7/site-packages (from virtualenv) (1.14.0)
    Requirement already satisfied, skipping upgrade: importlib-metadata<2,>=0.12; python_version < "3.8" in ./.test-venv/lib/python3.7/site-packages (from virtualenv) (1.5.0)
    Requirement already satisfied, skipping upgrade: filelock<4,>=3.0.0 in ./.test-venv/lib/python3.7/site-packages (from virtualenv) (3.0.12)
    Requirement already satisfied, skipping upgrade: appdirs<2,>=1.4.3 in ./.test-venv/lib/python3.7/site-packages (from virtualenv) (1.4.3)
    Requirement already satisfied, skipping upgrade: distlib<1,>=0.3.0 in ./.test-venv/lib/python3.7/site-packages (from virtualenv) (0.3.0)
    Requirement already satisfied, skipping upgrade: zipp>=0.5 in ./.test-venv/lib/python3.7/site-packages (from importlib-metadata<2,>=0.12; python_version < "3.8"->virtualenv) (2.2.0)
    Installing collected packages: virtualenv
      Found existing installation: virtualenv 16.7.9
        Uninstalling virtualenv-16.7.9:
          Successfully uninstalled virtualenv-16.7.9
    Successfully installed virtualenv-20.0.4
    ./.test-venv/bin/python -m virtualenv .mac-os-venv
    created virtual environment in 169ms CPython3Posix(dest=/Users/aegelhofer/.mac-os-venv, clear=False, global=False) with seeder FromAppData pip=latest setuptools=latest wheel=latest app_data_dir=/Users/aegelhofer/Library/Application Support/virtualenv/seed-v1 via=copy
    

    Now at this point I expect the python and pip "binaries" to be under ~/.mac-os-venv/bin/*, but they now seem to be under ~/.mac-os-venv/<sourced-prefix>/bin/*:

    ls ~/.mac-os-venv/bin/*
    zsh: no matches found: /Users/aegelhofer/.mac-os-venv/bin/*
    ls ~/.mac-os-venv/usr/local/bin/*
    /Users/aegelhofer/.mac-os-venv/usr/local/bin/activate		/Users/aegelhofer/.mac-os-venv/usr/local/bin/pip
    /Users/aegelhofer/.mac-os-venv/usr/local/bin/activate.csh	/Users/aegelhofer/.mac-os-venv/usr/local/bin/pip-3.7
    /Users/aegelhofer/.mac-os-venv/usr/local/bin/activate.fish	/Users/aegelhofer/.mac-os-venv/usr/local/bin/pip3
    /Users/aegelhofer/.mac-os-venv/usr/local/bin/activate.ps1	/Users/aegelhofer/.mac-os-venv/usr/local/bin/python
    /Users/aegelhofer/.mac-os-venv/usr/local/bin/activate.xsh	/Users/aegelhofer/.mac-os-venv/usr/local/bin/python3
    /Users/aegelhofer/.mac-os-venv/usr/local/bin/activate_this.py	/Users/aegelhofer/.mac-os-venv/usr/local/bin/python3.7
    /Users/aegelhofer/.mac-os-venv/usr/local/bin/easy_install	/Users/aegelhofer/.mac-os-venv/usr/local/bin/wheel
    /Users/aegelhofer/.mac-os-venv/usr/local/bin/easy_install-3.7	/Users/aegelhofer/.mac-os-venv/usr/local/bin/wheel-3.7
    /Users/aegelhofer/.mac-os-venv/usr/local/bin/easy_install3	/Users/aegelhofer/.mac-os-venv/usr/local/bin/wheel3
    

    This behavior change messes with tools like tox that expect to have the pip binary under <ENV-ROOT>/bin - Reading the changelog I didn't see anything mentioning this behavior change

    If this is un-related, I can file a separate bug, but it seems suspect that we're getting hung up on the same issues relating to "prefixes" here. Attached is my debug output of virtualenv-20.0.4 command creating a virtualenv:

    virtualenv-debug-output-issue-1632.txt

    Originally posted by @andrewegel in https://github.com/pypa/virtualenv/issues/1632#issuecomment-586485362

    PS. moved here as it's a new issue.

    needs-reproducer 
    opened by gaborbernat 35
  • Handling encodings correctly

    Handling encodings correctly

    Fixes #457

    On Travis CI pypy 2.5.0 and pypy3 2.4.0 failed. On my machine pypy 5.1 works fine:

    $ pypy virtualenv.py 中文
    New pypy executable in /home/yen/tmp/virtualenv/中文/bin/pypy
    Installing setuptools, pip, wheel...done.
    

    And pypy3 gives a strange error:

    $ pypy3 virtualenv.py 中文
    New pypy executable in /home/yen/tmp/virtualenv/中文/bin/pypy3
    Also creating executable in /home/yen/tmp/virtualenv/中文/bin/pypy
    debug: OperationError:
    debug:  operror-type: LookupError
    debug:  operror-value: no codec search functions registered: can't find encoding
    debug: OperationError:
    debug:  operror-type: AttributeError
    debug:  operror-value: stdout
    ERROR: The executable /home/yen/tmp/virtualenv/中文/bin/pypy3 is not functioning
    ERROR: It thinks sys.prefix is '/home/yen/tmp/virtualenv' (should be '/home/yen/tmp/virtualenv/中文')
    ERROR: virtualenv is not compatible with this system or executable
    

    I guess it's related to a PyPy bug. Reported to https://bitbucket.org/pypy/pypy/issues/2300.


    This was migrated from pypa/virtualenv#875 to reparent it to the master branch. Please see original pull request for any previous discussion.

    opened by yan12125 35
  • Fix wrong prompt in Nushell activation script

    Fix wrong prompt in Nushell activation script

    Recently, the Nushell prompt was broken when running the activation script due to some recent language changes. This PR fixes it again.

    Fixes https://github.com/pypa/virtualenv/issues/2480

    Thanks for contributing, make sure you address all the checklists (for details on how see development documentation)

    • [ ] ran the linter to address style issues (tox -e fix_lint)
    • [x] wrote descriptive pull request text
    • [ ] ensured there are test(s) validating the fix
    • [x] added news fragment in docs/changelog folder
    • [ ] updated/extended the documentation
    opened by kubouch 0
  • Nushell activation script results in broken prompt

    Nushell activation script results in broken prompt

    Issue

    The Nushell activation script no longer handles prompts correctly due to the split of closures and blocks in 0.72.

    https://github.com/pypa/virtualenv/blob/beb7d66b5575f75d4b660d90ad75c3a56deb8a20/src/virtualenv/activation/nushell/activate.nu#L95

    This lines checks for type block, but many/(most?) prompts will now be of type closure, causing them to render as <Closure X> rather than actually running the prompt function.

    eg.

    (venv) <Closure 11>〉
    

    I don't have the expertise to know whether switching that check to "closure" is the correct fix or not so I'm just leaving this bug report rather than opening a PR. Editing that line in my activate.nu does work as a temporary fix though.

    Environment

    Provide at least:

    • OS: macos 13.1
    • pip list of the host python where virtualenv is installed:
    asdf
    Package      Version
    ------------ -------
    distlib      0.3.6
    filelock     3.8.0
    pip          22.3.1
    platformdirs 2.5.4
    setuptools   65.6.3
    virtualenv   20.17.1
    wheel        0.38.4
    

    Output of the virtual environment creation

    This isn't an issue with creation so I'm not including this.

    bug 
    opened by dpatterbee 2
  • ResourceWarning on env's setup

    ResourceWarning on env's setup

    Issue There are ResourceWarnings on virtual env creation.

    Environment

    • pip list of the host python where virtualenv is installed:
    (integration) [[email protected] pyproject_installer]$ pip list
    Package        Version
    -------------- -------
    attrs          22.2.0
    distlib        0.3.6
    exceptiongroup 1.1.0
    filelock       3.8.2
    iniconfig      1.1.1
    packaging      22.0
    pip            22.3.1
    platformdirs   2.6.0
    pluggy         1.0.0
    pytest         7.2.0
    setuptools     65.6.3
    tomli          2.0.1
    virtualenv     20.17.1
    wheel          0.38.4
    

    Output of the virtual environment creation

    (integration) [[email protected] pyproject_installer]$ python -W error::ResourceWarning -m virtualenv --no-setuptools --no-wheel -vvv --with-traceback test
    280 setup logging to NOTSET [DEBUG report:35]
    280 created app data folder /usr/src/.local/share/virtualenv [DEBUG __init__:40]
    284 find interpreter for spec PythonSpec(path=/usr/src/RPM/BUILD/pyproject_installer/.tox/integration/bin/python) [INFO builtin:56]
    284 discover exe for PythonInfo(spec=CPython3.10.8.final.0-64, exe=/usr/src/RPM/BUILD/pyproject_installer/.tox/integration/bin/python, platform=linux, version='3.10.8 (main, Dec 17 2022, 11:34:59) [GCC 12.1.1 20220518 (ALT Sisyphus 12.1.1-alt2)]', encoding_fs_io=utf-8-utf-8) in /usr [DEBUG py_info:437]
    284 filesystem is case-sensitive [DEBUG info:24]
    285 Attempting to acquire lock 140183178084464 on /usr/src/.local/share/virtualenv/py_info/1/8a94588eda9d64d9e9a351ab8144e55b1fabf5113b54e67dd26a8c27df0381b3.lock [DEBUG _api:172]
    285 Lock 140183178084464 acquired on /usr/src/.local/share/virtualenv/py_info/1/8a94588eda9d64d9e9a351ab8144e55b1fabf5113b54e67dd26a8c27df0381b3.lock [DEBUG _api:176]
    286 get interpreter info via cmd: /usr/bin/python3.10 /usr/src/RPM/BUILD/pyproject_installer/.tox/integration/lib/python3/site-packages/virtualenv/discovery/py_info.py XjXJ3A7syvkfleqZinswfzCYUKpcUjxL deGvXS8ZsucZgjoK64iWvsew6As8FDQp [DEBUG cached_py_info:108]
    390 wrote python info of /usr/bin/python3.10 at /usr/src/.local/share/virtualenv/py_info/1/8a94588eda9d64d9e9a351ab8144e55b1fabf5113b54e67dd26a8c27df0381b3.json [DEBUG via_disk_folder:155]
    390 Attempting to release lock 140183178084464 on /usr/src/.local/share/virtualenv/py_info/1/8a94588eda9d64d9e9a351ab8144e55b1fabf5113b54e67dd26a8c27df0381b3.lock [DEBUG _api:209]
    391 Lock 140183178084464 released on /usr/src/.local/share/virtualenv/py_info/1/8a94588eda9d64d9e9a351ab8144e55b1fabf5113b54e67dd26a8c27df0381b3.lock [DEBUG _api:212]
    391 proposed PythonInfo(spec=CPython3.10.8.final.0-64, system=/usr/bin/python3.10, exe=/usr/src/RPM/BUILD/pyproject_installer/.tox/integration/bin/python, platform=linux, version='3.10.8 (main, Dec 17 2022, 11:34:59) [GCC 12.1.1 20220518 (ALT Sisyphus 12.1.1-alt2)]', encoding_fs_io=utf-8-utf-8) [INFO builtin:63]
    391 accepted PythonInfo(spec=CPython3.10.8.final.0-64, system=/usr/bin/python3.10, exe=/usr/src/RPM/BUILD/pyproject_installer/.tox/integration/bin/python, platform=linux, version='3.10.8 (main, Dec 17 2022, 11:34:59) [GCC 12.1.1 20220518 (ALT Sisyphus 12.1.1-alt2)]', encoding_fs_io=utf-8-utf-8) [DEBUG builtin:65]
    428 create virtual environment via CPython3Posix(dest=/usr/src/RPM/BUILD/pyproject_installer/test, clear=False, no_vcs_ignore=False, global=False) [INFO session:48]
    429 write /usr/src/RPM/BUILD/pyproject_installer/test/pyvenv.cfg [DEBUG pyenv_cfg:30]
    429     home = /usr/bin [DEBUG pyenv_cfg:34]
    429     implementation = CPython [DEBUG pyenv_cfg:34]
    429     version_info = 3.10.8.final.0 [DEBUG pyenv_cfg:34]
    429     virtualenv = 20.17.1 [DEBUG pyenv_cfg:34]
    429     include-system-site-packages = false [DEBUG pyenv_cfg:34]
    429     base-prefix = /usr [DEBUG pyenv_cfg:34]
    429     base-exec-prefix = /usr [DEBUG pyenv_cfg:34]
    429     base-executable = /usr/bin/python3.10 [DEBUG pyenv_cfg:34]
    429 remove file /usr/src/RPM/BUILD/pyproject_installer/test/bin/python [DEBUG _sync:22]
    429 symlink /usr/bin/python3.10 to /usr/src/RPM/BUILD/pyproject_installer/test/bin/python [DEBUG _sync:28]
    430 create virtualenv import hook file /usr/src/RPM/BUILD/pyproject_installer/test/lib/python3/site-packages/_virtualenv.pth [DEBUG api:89]
    430 create /usr/src/RPM/BUILD/pyproject_installer/test/lib/python3/site-packages/_virtualenv.py [DEBUG api:92]
    430 ============================== target debug ============================== [DEBUG session:50]
    430 debug via /usr/src/RPM/BUILD/pyproject_installer/test/bin/python /usr/src/RPM/BUILD/pyproject_installer/.tox/integration/lib/python3/site-packages/virtualenv/create/debug.py [DEBUG creator:197]
    430 {
      "sys": {
        "executable": "/usr/src/RPM/BUILD/pyproject_installer/test/bin/python",
        "_base_executable": "/usr/src/RPM/BUILD/pyproject_installer/test/bin/python",
        "prefix": "/usr/src/RPM/BUILD/pyproject_installer/test",
        "base_prefix": "/usr",
        "real_prefix": null,
        "exec_prefix": "/usr/src/RPM/BUILD/pyproject_installer/test",
        "base_exec_prefix": "/usr",
        "path": [
          "/usr/lib64/python310.zip",
          "/usr/lib64/python3.10",
          "/usr/lib64/python3.10/lib-dynload",
          "/usr/src/RPM/BUILD/pyproject_installer/test/lib64/python3/site-packages",
          "/usr/src/RPM/BUILD/pyproject_installer/test/lib/python3/site-packages"
        ],
        "meta_path": [
          "<class '_distutils_hack.DistutilsMetaFinder'>",
          "<class '_virtualenv._Finder'>",
          "<class '_frozen_importlib.BuiltinImporter'>",
          "<class '_frozen_importlib.FrozenImporter'>",
          "<class '_frozen_importlib_external.PathFinder'>"
        ],
        "fs_encoding": "utf-8",
        "io_encoding": "utf-8"
      },
      "version": "3.10.8 (main, Dec 17 2022, 11:34:59) [GCC 12.1.1 20220518 (ALT Sisyphus 12.1.1-alt2)]",
      "makefile_filename": "/usr/lib64/python3.10/config-3.10-x86_64-linux-gnu/Makefile",
      "os": "<module 'os' from '/usr/lib64/python3.10/os.py'>",
      "site": "<module 'site' from '/usr/lib64/python3.10/site.py'>",
      "datetime": "<module 'datetime' from '/usr/lib64/python3.10/datetime.py'>",
      "math": "<module 'math' from '/usr/lib64/python3.10/lib-dynload/math.cpython-310.so'>",
      "json": "<module 'json' from '/usr/lib64/python3.10/json/__init__.py'>"
    } [DEBUG session:51]
    512 add seed packages via FromAppData(download=False, pip=bundle, via=copy, app_data_dir=/usr/src/.local/share/virtualenv) [INFO session:55]
    515 wrote embed update of distribution pip at /usr/src/.local/share/virtualenv/wheel/3.10/embed/3/pip.json [DEBUG via_disk_folder:155]
    517 triggered periodic upgrade of pip==22.3.1 (for python 3.10) via background process having PID 3708911 [INFO periodic_update:218]
    Exception ignored in: <function Popen.__del__ at 0x7f7ef1a500d0>
    Traceback (most recent call last):
      File "/usr/lib64/python3.10/subprocess.py", line 1072, in __del__
        _warn("subprocess %s is still running" % self.pid,
    ResourceWarning: subprocess 3708911 is still running
    Exception ignored in: <_io.FileIO name=3 mode='rb' closefd=True>
    Traceback (most recent call last):
      File "/usr/src/RPM/BUILD/pyproject_installer/.tox/integration/lib/python3/site-packages/virtualenv/seed/wheels/periodic_update.py", line 70, in handle_auto_update
        trigger_update(distribution, for_py_version, wheel, search_dirs, app_data, periodic=True, env=env)
    ResourceWarning: unclosed file <_io.BufferedReader name=3>
    Exception ignored in: <_io.FileIO name=5 mode='rb' closefd=True>
    Traceback (most recent call last):
      File "/usr/src/RPM/BUILD/pyproject_installer/.tox/integration/lib/python3/site-packages/virtualenv/seed/wheels/periodic_update.py", line 70, in handle_auto_update
        trigger_update(distribution, for_py_version, wheel, search_dirs, app_data, periodic=True, env=env)
    ResourceWarning: unclosed file <_io.BufferedReader name=5>
    ...
    
    bug 
    opened by stanislavlevin 0
  • Cache is not invalidated if PythonInfo is changed

    Cache is not invalidated if PythonInfo is changed

    Issue

    For example in the commit https://github.com/pypa/virtualenv/commit/445a68dffa7ba5c0af3b02ec0545b760cd8c04ba it was fixed that the venv prefix on Debian systems with 3.10 includes a wrong "local" prefix. But since virtualenv caches the PythonInfo class on disk if it called with a specific executable (e.g. poetry specifies a specific exe), it can happen that broken information is provided for the virtual env creation.

    The package should include a mechanism to invalidate the cache data if the internals of the PythonInfo changes.

    Environment

    Provide at least:

    • OS: Debian unstable
    • Python: 3.10.9
    • pip list of the host python where virtualenv is installed:
    $ pip list
    Package                            Version
    ---------------------------------- -------------------------
    appdirs                            1.4.4
    argon2-cffi                        21.1.0
    asn1crypto                         1.5.1
    astroid                            2.12.13
    asttokens                          2.2.0
    async-generator                    1.10
    attrs                              22.1.0
    Babel                              2.10.3
    backcall                           0.2.0
    beautifulsoup4                     4.11.1
    beniget                            0.4.1
    black                              22.10.0
    bleach                             5.0.1
    borgbackup                         1.2.2
    Brotli                             1.0.9
    build                              0.7.0
    bytecode                           0.14.0
    certifi                            2022.9.24
    chardet                            5.1.0
    charset-normalizer                 3.0.1
    click                              8.1.3
    colorama                           0.4.6
    coverage                           6.5.0
    cryptography                       38.0.4
    cupshelpers                        1.0
    cycler                             0.11.0
    dbus-python                        1.3.2
    debugpy                            1.6.3+git20221103.a2a3328
    decorator                          5.1.1
    defusedxml                         0.7.1
    dill                               0.3.6
    distlib                            0.3.6
    distro                             1.8.0
    distro-info                        1.2
    entrypoints                        0.4
    exceptiongroup                     1.0.4
    executing                          1.2.0
    fastjsonschema                     2.15.1
    filelock                           3.8.2
    flake8                             5.0.4
    fonttools                          4.37.4
    fs                                 2.4.16
    gast                               0.5.2
    html5lib                           1.1
    httplib2                           0.20.4
    idna                               3.3
    importlib-metadata                 4.12.0
    iotop                              0.6
    ipykernel                          6.17.0
    ipython                            8.5.0
    ipython_genutils                   0.2.0
    ipywidgets                         6.0.0
    isort                              5.6.4
    jedi                               0.18.0
    Jinja2                             3.0.3
    jsonpointer                        2.3
    jsonschema                         4.9.1
    jupyter-client                     7.3.4
    jupyter-console                    6.4.4
    jupyter_core                       4.12.0
    jupyterlab-pygments                0.2.2
    kiwisolver                         1.3.2
    lazy-object-proxy                  1.7.1
    libevdev                           0.5
    llfuse                             1.4.1
    logilab-common                     1.9.7
    lxml                               4.9.1
    lz4                                4.0.2+dfsg
    Mako                               1.2.4.dev0
    Markdown                           3.4.1
    MarkupSafe                         2.1.1
    matplotlib                         3.5.2
    matplotlib-inline                  0.1.6
    mccabe                             0.7.0
    mechanize                          0.4.8
    mensapy                            0.3.0
    more-itertools                     8.10.0
    mpmath                             0.0.0
    msgpack                            1.0.3
    mypy                               0.991
    mypy-extensions                    0.4.3
    nbclient                           0.7.0
    nbconvert                          6.5.3
    nbformat                           5.5.0
    nest-asyncio                       1.5.4
    netifaces                          0.11.0
    notebook                           6.4.12
    numpy                              1.23.5
    olefile                            0.46
    outcome                            1.2.0
    packaging                          22.0
    pandocfilters                      1.5.0
    parso                              0.8.3
    pathspec                           0.10.1
    pep517                             0.12.0
    pexpect                            4.8.0
    pickleshare                        0.7.5
    Pillow                             9.2.0
    pip                                22.3.1
    platformdirs                       2.6.0
    ply                                3.11
    prometheus-client                  0.9.0
    prompt-toolkit                     3.0.36
    protobuf                           4.21.12
    psutil                             5.9.4
    ptyprocess                         0.7.0
    pure-eval                          0.0.0
    py                                 1.11.0
    pycairo                            1.20.1
    pycodestyle                        2.9.1
    pycups                             2.0.1
    pycurl                             7.45.1
    pydevd                             2.9.2
    pyflakes                           2.5.0
    pyfuse3                            3.2.1
    Pygments                           2.13.0
    PyGObject                          3.42.2
    pylint                             2.15.8
    pyparsing                          3.0.9
    pyrsistent                         0.18.1
    PySimpleSOAP                       1.16.2
    pysmbc                             1.0.23
    python-apt                         2.5.0
    python-dateutil                    2.8.2
    python-debian                      0.1.49
    python-debianbts                   4.0.1
    pythran                            0.11.0
    pytz                               2022.6
    pyudev                             0.24.0
    PyYAML                             6.0
    pyzmq                              24.0.1
    reportbug                          11.6.0
    reportlab                          3.6.11
    requests                           2.28.1
    rfc3987                            1.3.8
    SciPy                              1.8.1
    Send2Trash                         1.8.1b0
    setuptools                         65.5.0
    six                                1.16.0
    sniffio                            1.2.0
    sortedcontainers                   2.4.0
    soupsieve                          2.3.2
    stack-data                         0.6.2
    sympy                              1.11.1
    terminado                          0.17.0
    tinycss2                           1.2.1
    toml                               0.10.2
    tomli                              2.0.1
    tomlkit                            0.11.6
    tornado                            6.2
    traitlets                          5.5.0
    trio                               0.22.0
    types-aiofiles                     22.1
    types-annoy                        1.17
    types-appdirs                      1.4
    types-aws-xray-sdk                 2.10
    types-babel                        2.11
    types-backports.ssl-match-hostname 3.7
    types-beautifulsoup4               4.11
    types-bleach                       5.0
    types-boto                         2.49
    types-braintree                    4.17
    types-cachetools                   5.2
    types-caldav                       0.10
    types-certifi                      2021.10.8
    types-cffi                         1.15
    types-chardet                      5.0
    types-chevron                      0.14
    types-click-spinner                0.1
    types-colorama                     0.4
    types-commonmark                   0.9
    types-console-menu                 0.7
    types-contextvars                  2.4
    types-croniter                     1.3
    types-cryptography                 3.3
    types-D3DShot                      0.1
    types-dateparser                   1.1
    types-DateTimeRange                1.2
    types-decorator                    5.1
    types-Deprecated                   1.2
    types-dj-database-url              1.0
    types-docopt                       0.6
    types-docutils                     0.19
    types-editdistance                 0.6
    types-emoji                        2.1
    types-entrypoints                  0.4
    types-first                        2.0
    types-flake8-2020                  1.7
    types-flake8-bugbear               22.10.27
    types-flake8-builtins              2.0
    types-flake8-docstrings            1.6
    types-flake8-plugin-utils          1.3
    types-flake8-rst-docstrings        0.2
    types-flake8-simplify              0.19
    types-flake8-typing-imports        1.14
    types-Flask-Cors                   3.0
    types-Flask-SQLAlchemy             2.5
    types-fpdf2                        2.5
    types-gdb                          12.1
    types-google-cloud-ndb             1.11
    types-hdbcli                       2.14
    types-html5lib                     1.1
    types-httplib2                     0.21
    types-humanfriendly                10.0
    types-invoke                       1.7
    types-JACK-Client                  0.5
    types-jmespath                     1.0
    types-jsonschema                   4.17
    types-keyboard                     0.13
    types-ldap3                        2.9
    types-Markdown                     3.4
    types-mock                         4.0
    types-mypy-extensions              0.4
    types-mysqlclient                  2.1
    types-oauthlib                     3.2
    types-openpyxl                     3.0
    types-opentracing                  2.4
    types-paho-mqtt                    1.6
    types-paramiko                     2.11
    types-parsimonious                 0.10
    types-passlib                      1.7
    types-passpy                       1.0
    types-peewee                       3.15
    types-pep8-naming                  0.13
    types-Pillow                       9.3
    types-playsound                    1.3
    types-polib                        1.1
    types-prettytable                  3.4
    types-protobuf                     3.20
    types-psutil                       5.9
    types-psycopg2                     2.9
    types-pyaudio                      0.2
    types-PyAutoGUI                    0.9
    types-pycurl                       7.45
    types-pyfarmhash                   0.3
    types-pyflakes                     2.5
    types-Pygments                     2.13
    types-pyinstaller                  5.6
    types-PyMySQL                      1.0
    types-pynput                       1.7
    types-pyOpenSSL                    22.1
    types-pyRFC3339                    1.1
    types-PyScreeze                    0.1
    types-pysftp                       0.2
    types-pytest-lazy-fixture          0.6
    types-python-crontab               2.6
    types-python-dateutil              2.8
    types-python-gflags                3.1
    types-python-jose                  3.3
    types-python-nmap                  0.7
    types-python-slugify               6.1
    types-pytz                         2022.6
    types-pyvmomi                      7.0
    types-pywin32                      304
    types-PyYAML                       6.0
    types-redis                        4.3
    types-regex                        2022.10.31
    types-requests                     2.28
    types-retry                        0.9
    types-Send2Trash                   1.8
    types-setuptools                   65.5
    types-simplejson                   3.17
    types-singledispatch               3.7
    types-six                          1.16
    types-slumber                      0.7
    types-SQLAlchemy                   1.4.43
    types-stdlib-list                  0.8
    types-stripe                       3.5
    types-tabulate                     0.9
    types-termcolor                    1.1
    types-toml                         0.10
    types-toposort                     1.7
    types-tqdm                         4.64
    types-tree-sitter                  0.20
    types-tree-sitter-languages        1.5
    types-ttkthemes                    3.2
    types-typed-ast                    1.5
    types-tzlocal                      4.2
    types-ujson                        5.5
    types-urllib3                      1.26
    types-vobject                      0.9
    types-waitress                     2.1
    types-whatthepatch                 1.0
    types-xmltodict                    0.13
    types-xxhash                       3.0
    types-zxcvbn                       4.4
    typing_extensions                  4.3.0
    ufoLib2                            0.13.1
    unattended-upgrades                0.1
    unicodedata2                       15.0.0
    uritemplate                        4.1.1
    urllib3                            1.26.12
    virtualenv                         20.17.1+ds
    wcwidth                            0.2.5
    webcolors                          1.11.1
    webencodings                       0.5.1
    wheel                              0.38.4
    widgetsnbextension                 2.0.0
    wrapt                              1.14.1
    zipp                               1.0.0
    
    bug 
    opened by JanLuca 1
  • virtualenv seems to swallow PipDeprecationWarning

    virtualenv seems to swallow PipDeprecationWarning

    Issue

    When installing a package that uses the legacy setup.py install method, (a reasonably recent version of) pip will emit a PipDeprecationWarning. I'll use MarkupSafe==2.1.1 here as an example.

    Reproducer (using python 3.11)

    rm -rf venv_test; python3.11 -m venv venv_test && source venv_test/bin/activate && pip install -U pip && python -VV && python -m pip -V
    

    output:

    Requirement already satisfied: pip in ./venv_test/lib/python3.11/site-packages (22.3)
    Collecting pip
      Using cached pip-22.3.1-py3-none-any.whl (2.1 MB)
    Installing collected packages: pip
      Attempting uninstall: pip
        Found existing installation: pip 22.3
        Uninstalling pip-22.3:
          Successfully uninstalled pip-22.3
    Successfully installed pip-22.3.1
    Python 3.11.0 (main, Nov  2 2022, 13:45:57) [GCC 11.3.0]
    pip 22.3.1 from ****/venv_test/lib/python3.11/site-packages/pip (python 3.11) 
    

    then run

    python -W error -m pip --no-cache-dir install --force-reinstall MarkupSafe==2.1.1
    

    which fails with:

    Collecting MarkupSafe==2.1.1
      Downloading MarkupSafe-2.1.1.tar.gz (18 kB)
      Preparing metadata (setup.py) ... done
    Installing collected packages: MarkupSafe
    ERROR: Exception:
    Traceback (most recent call last):
      File "****/venv_test/lib/python3.11/site-packages/pip/_internal/cli/base_command.py", line 160, in exc_logging_wrapper
        status = run_func(*args)
                 ^^^^^^^^^^^^^^^
      File "****/venv_test/lib/python3.11/site-packages/pip/_internal/cli/req_command.py", line 247, in wrapper
        return func(self, options, args)
               ^^^^^^^^^^^^^^^^^^^^^^^^^
      File "****/venv_test/lib/python3.11/site-packages/pip/_internal/commands/install.py", line 494, in run
        installed = install_given_reqs(
                    ^^^^^^^^^^^^^^^^^^^
      File "****/venv_test/lib/python3.11/site-packages/pip/_internal/req/__init__.py", line 73, in install_given_reqs
        requirement.install(
      File "****/venv_test/lib/python3.11/site-packages/pip/_internal/req/req_install.py", line 820, in install
        self.legacy_install_reason.emit_deprecation(self.name)
      File "****/venv_test/lib/python3.11/site-packages/pip/_internal/utils/deprecation.py", line 143, in emit_deprecation
        deprecated(
      File "****/venv_test/lib/python3.11/site-packages/pip/_internal/utils/deprecation.py", line 120, in deprecated
        warnings.warn(message, category=PipDeprecationWarning, stacklevel=2)
    pip._internal.utils.deprecation.PipDeprecationWarning: DEPRECATION: MarkupSafe is being installed using the legacy 'setup.py install' method, because it does not have a 'pyproject.toml' and the 'wheel' package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the '--use-pep517' option. Discussion can be found at https://github.com/pypa/pip/issues/8559
    

    which is the same error I get when installing that dependency without any venv/virtualenv.

    Now repeat that same thing with virtualenv

    deactivate; python3.11 -m pip install -U virtualenv
    rm -rf venv_test; python3.11 -m virtualenv venv_test && source venv_test/bin/activate && pip install -U pip && python -VV && python -m pip -V
    

    output:

    # first line
    Requirement already satisfied: virtualenv in ~/.pyenv/versions/3.11.0/lib/python3.11/site-packages (20.17.0)
    Requirement already satisfied: distlib<1,>=0.3.6 in ~/.pyenv/versions/3.11.0/lib/python3.11/site-packages (from virtualenv) (0.3.6)
    Requirement already satisfied: filelock<4,>=3.4.1 in ~/.pyenv/versions/3.11.0/lib/python3.11/site-packages (from virtualenv) (3.8.0)
    Requirement already satisfied: platformdirs<3,>=2.4 in ~/.pyenv/versions/3.11.0/lib/python3.11/site-packages (from virtualenv) (2.5.2)
    # second line
    created virtual environment CPython3.11.0.final.0-64 in 150ms
      creator CPython3Posix(dest=****/venv_test, clear=False, no_vcs_ignore=False, global=False)
      seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=~/.local/share/virtualenv)
        added seed packages: pip==22.3.1, setuptools==65.6.3, wheel==0.38.4
      activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator
    Requirement already satisfied: pip in ./venv_test/lib/python3.11/site-packages (22.3.1)
    Python 3.11.0 (main, Nov  2 2022, 13:45:57) [GCC 11.3.0]
    pip 22.3.1 from ****/venv_test/lib/python3.11/site-packages/pip (python 3.11)
    

    and then run

    python -W error -m pip --no-cache-dir install --force-reinstall MarkupSafe==2.1.1
    

    which succeeds with output:

    Collecting MarkupSafe==2.1.1
      Downloading MarkupSafe-2.1.1.tar.gz (18 kB)
      Preparing metadata (setup.py) ... done
    Building wheels for collected packages: MarkupSafe
      Building wheel for MarkupSafe (setup.py) ... done
      Created wheel for MarkupSafe: filename=MarkupSafe-2.1.1-cp311-cp311-linux_x86_64.whl size=28395 sha256=5f329326840a67cc9e48339d97ccd4ca619573531c439b42c4484370f0c27121
      Stored in directory: /tmp/pip-ephem-wheel-cache-hwj6l9sz/wheels/96/ee/62/407c247ad088bcb67b530ba3ac1479058c58a651bd6bf09a1f
    Successfully built MarkupSafe
    Installing collected packages: MarkupSafe
    Successfully installed MarkupSafe-2.1.1
    

    Why is that difference there and should it be?

    Environment

    Provide at least:

    • OS:
       Operating System: Linux Mint 21                   
                 Kernel: Linux 5.15.0-53-generic
           Architecture: x86-64
      
    • pip list of the host python where virtualenv is installed:
      Package              Version
      -------------------- ---------
      attrs                22.1.0
      black                22.10.0
      CacheControl         0.12.11
      cachy                0.3.0
      certifi              2022.9.24
      cffi                 1.15.1
      charset-normalizer   2.1.1
      cleo                 1.0.0a5
      click                8.1.3
      crashtest            0.3.1
      cryptography         38.0.3
      distlib              0.3.6
      dulwich              0.20.50
      filelock             3.8.0
      html5lib             1.1
      idna                 3.4
      jaraco.classes       3.2.3
      jeepney              0.8.0
      jsonschema           4.17.0
      keyring              23.9.3
      lockfile             0.12.2
      more-itertools       9.0.0
      msgpack              1.0.4
      mypy-extensions      0.4.3
      neo4j                5.2.1
      packaging            21.3
      pathspec             0.10.2
      pexpect              4.8.0
      pip                  22.3.1
      pkginfo              1.8.3
      platformdirs         2.5.2
      poetry               1.2.2
      poetry-core          1.3.2
      poetry-plugin-export 1.1.2
      ptyprocess           0.7.0
      pycparser            2.21
      pylev                1.4.0
      pyparsing            3.0.9
      pyrsistent           0.19.2
      pytz                 2022.6
      requests             2.28.1
      requests-toolbelt    0.9.1
      SecretStorage        3.3.3
      setuptools           65.5.0
      shellingham          1.5.0
      six                  1.16.0
      tomlkit              0.11.6
      urllib3              1.26.12
      virtualenv           20.17.0
      webencodings         0.5.1
      
    
    **Output of the virtual environment creation**
    
    Make sure to run the creation with `-vvv --with-traceback`:
    
    ```console
    62 setup logging to NOTSET [DEBUG report:35]
    68 find interpreter for spec PythonSpec(path=~/.pyenv/versions/3.11.0/bin/python3.11) [INFO builtin:56]
    68 proposed PythonInfo(spec=CPython3.11.0.final.0-64, exe=~/.pyenv/versions/3.11.0/bin/python3.11, platform=linux, version='3.11.0 (main, Nov  2 2022, 13:45:57) [GCC 11.3.0]', encoding_fs_io=utf-8-utf-8) [INFO builtin:63]
    68 accepted PythonInfo(spec=CPython3.11.0.final.0-64, exe=~/.pyenv/versions/3.11.0/bin/python3.11, platform=linux, version='3.11.0 (main, Nov  2 2022, 13:45:57) [GCC 11.3.0]', encoding_fs_io=utf-8-utf-8) [DEBUG builtin:65]
    69 filesystem is case-sensitive [DEBUG info:24]
    96 create virtual environment via CPython3Posix(dest=****/venv_test, clear=False, no_vcs_ignore=False, global=False) [INFO session:48]
    96 create folder ****/venv_test/bin [DEBUG _sync:9]
    96 create folder ****/venv_test/lib/python3.11/site-packages [DEBUG _sync:9]
    97 write ****/venv_test/pyvenv.cfg [DEBUG pyenv_cfg:30]
    97 	home = ~/.pyenv/versions/3.11.0/bin [DEBUG pyenv_cfg:34]
    97 	implementation = CPython [DEBUG pyenv_cfg:34]
    97 	version_info = 3.11.0.final.0 [DEBUG pyenv_cfg:34]
    97 	virtualenv = 20.17.0 [DEBUG pyenv_cfg:34]
    97 	include-system-site-packages = false [DEBUG pyenv_cfg:34]
    97 	base-prefix = ~/.pyenv/versions/3.11.0 [DEBUG pyenv_cfg:34]
    97 	base-exec-prefix = ~/.pyenv/versions/3.11.0 [DEBUG pyenv_cfg:34]
    97 	base-executable = ~/.pyenv/versions/3.11.0/bin/python3.11 [DEBUG pyenv_cfg:34]
    97 symlink ~/.pyenv/versions/3.11.0/bin/python3.11 to ****/venv_test/bin/python [DEBUG _sync:28]
    97 create virtualenv import hook file ****/venv_test/lib/python3.11/site-packages/_virtualenv.pth [DEBUG api:89]
    97 create ****/venv_test/lib/python3.11/site-packages/_virtualenv.py [DEBUG api:92]
    98 ============================== target debug ============================== [DEBUG session:50]
    99 debug via ****/venv_test/bin/python ~/.pyenv/versions/3.11.0/lib/python3.11/site-packages/virtualenv/create/debug.py [DEBUG creator:197]
    98 {
      "sys": {
        "executable": "****/venv_test/bin/python",
        "_base_executable": "~/.pyenv/versions/3.11.0/bin/python3.11",
        "prefix": "****/venv_test",
        "base_prefix": "~/.pyenv/versions/3.11.0",
        "real_prefix": null,
        "exec_prefix": "****/venv_test",
        "base_exec_prefix": "~/.pyenv/versions/3.11.0",
        "path": [
          "~/.pyenv/versions/3.11.0/lib/python311.zip",
          "~/.pyenv/versions/3.11.0/lib/python3.11",
          "~/.pyenv/versions/3.11.0/lib/python3.11/lib-dynload",
          "****/venv_test/lib/python3.11/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": "utf-8"
      },
      "version": "3.11.0 (main, Nov  2 2022, 13:45:57) [GCC 11.3.0]",
      "makefile_filename": "~/.pyenv/versions/3.11.0/lib/python3.11/config-3.11-x86_64-linux-gnu/Makefile",
      "os": "<module 'os' (frozen)>",
      "site": "<module 'site' (frozen)>",
      "datetime": "<module 'datetime' from '~/.pyenv/versions/3.11.0/lib/python3.11/datetime.py'>",
      "math": "<module 'math' from '~/.pyenv/versions/3.11.0/lib/python3.11/lib-dynload/math.cpython-311-x86_64-linux-gnu.so'>",
      "json": "<module 'json' from '~/.pyenv/versions/3.11.0/lib/python3.11/json/__init__.py'>"
    } [DEBUG session:51]
    125 add seed packages via FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=~/.local/share/virtualenv) [INFO session:55]
    127 got embed update of distribution pip from ~/.local/share/virtualenv/wheel/3.11/embed/3/pip.json [DEBUG via_disk_folder:129]
    128 got embed update of distribution wheel from ~/.local/share/virtualenv/wheel/3.11/embed/3/wheel.json [DEBUG via_disk_folder:129]
    128 got embed update of distribution setuptools from ~/.local/share/virtualenv/wheel/3.11/embed/3/setuptools.json [DEBUG via_disk_folder:129]
    130 got embed update of distribution wheel from ~/.local/share/virtualenv/wheel/3.11/embed/3/wheel.json [DEBUG via_disk_folder:129]
    131 got embed update of distribution pip from ~/.local/share/virtualenv/wheel/3.11/embed/3/pip.json [DEBUG via_disk_folder:129]
    131 got embed update of distribution setuptools from ~/.local/share/virtualenv/wheel/3.11/embed/3/setuptools.json [DEBUG via_disk_folder:129]
    131 install wheel from wheel ~/.pyenv/versions/3.11.0/lib/python3.11/site-packages/virtualenv/seed/wheels/embed/wheel-0.38.4-py3-none-any.whl via CopyPipInstall [DEBUG via_app_data:47]
    132 install pip from wheel ~/.pyenv/versions/3.11.0/lib/python3.11/site-packages/virtualenv/seed/wheels/embed/pip-22.3.1-py3-none-any.whl via CopyPipInstall [DEBUG via_app_data:47]
    132 install setuptools from wheel ~/.pyenv/versions/3.11.0/lib/python3.11/site-packages/virtualenv/seed/wheels/embed/setuptools-65.6.3-py3-none-any.whl via CopyPipInstall [DEBUG via_app_data:47]
    132 Attempting to acquire lock 139661494967376 on ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/wheel-0.38.4-py3-none-any.lock [DEBUG _api:172]
    132 Attempting to acquire lock 139661494971856 on ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-22.3.1-py3-none-any.lock [DEBUG _api:172]
    133 Lock 139661494971856 acquired on ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-22.3.1-py3-none-any.lock [DEBUG _api:176]
    133 Lock 139661494967376 acquired on ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/wheel-0.38.4-py3-none-any.lock [DEBUG _api:176]
    133 Attempting to acquire lock 139661494966608 on ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-65.6.3-py3-none-any.lock [DEBUG _api:172]
    133 Attempting to release lock 139661494971856 on ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-22.3.1-py3-none-any.lock [DEBUG _api:209]
    133 Lock 139661494966608 acquired on ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-65.6.3-py3-none-any.lock [DEBUG _api:176]
    133 Lock 139661494971856 released on ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-22.3.1-py3-none-any.lock [DEBUG _api:212]
    133 Attempting to release lock 139661494967376 on ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/wheel-0.38.4-py3-none-any.lock [DEBUG _api:209]
    133 Lock 139661494967376 released on ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/wheel-0.38.4-py3-none-any.lock [DEBUG _api:212]
    133 Attempting to release lock 139661494966608 on ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-65.6.3-py3-none-any.lock [DEBUG _api:209]
    133 Lock 139661494966608 released on ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-65.6.3-py3-none-any.lock [DEBUG _api:212]
    134 copy ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-22.3.1-py3-none-any/pip-22.3.1.virtualenv to ****/venv_test/lib/python3.11/site-packages/pip-22.3.1.virtualenv [DEBUG _sync:36]
    134 copy directory ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-65.6.3-py3-none-any/setuptools to ****/venv_test/lib/python3.11/site-packages/setuptools [DEBUG _sync:36]
    134 copy ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/wheel-0.38.4-py3-none-any/wheel-0.38.4.virtualenv to ****/venv_test/lib/python3.11/site-packages/wheel-0.38.4.virtualenv [DEBUG _sync:36]
    134 copy directory ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-22.3.1-py3-none-any/pip-22.3.1.dist-info to ****/venv_test/lib/python3.11/site-packages/pip-22.3.1.dist-info [DEBUG _sync:36]
    135 copy directory ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/wheel-0.38.4-py3-none-any/wheel-0.38.4.dist-info to ****/venv_test/lib/python3.11/site-packages/wheel-0.38.4.dist-info [DEBUG _sync:36]
    137 copy directory ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-22.3.1-py3-none-any/pip to ****/venv_test/lib/python3.11/site-packages/pip [DEBUG _sync:36]
    137 copy directory ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/wheel-0.38.4-py3-none-any/wheel to ****/venv_test/lib/python3.11/site-packages/wheel [DEBUG _sync:36]
    142 generated console scripts wheel3 wheel wheel3.11 wheel-3.11 [DEBUG base:41]
    183 copy directory ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-65.6.3-py3-none-any/pkg_resources to ****/venv_test/lib/python3.11/site-packages/pkg_resources [DEBUG _sync:36]
    194 copy directory ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-65.6.3-py3-none-any/_distutils_hack to ****/venv_test/lib/python3.11/site-packages/_distutils_hack [DEBUG _sync:36]
    195 copy directory ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-65.6.3-py3-none-any/setuptools-65.6.3.dist-info to ****/venv_test/lib/python3.11/site-packages/setuptools-65.6.3.dist-info [DEBUG _sync:36]
    196 copy ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-65.6.3-py3-none-any/distutils-precedence.pth to ****/venv_test/lib/python3.11/site-packages/distutils-precedence.pth [DEBUG _sync:36]
    197 copy ~/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-65.6.3-py3-none-any/setuptools-65.6.3.virtualenv to ****/venv_test/lib/python3.11/site-packages/setuptools-65.6.3.virtualenv [DEBUG _sync:36]
    197 generated console scripts  [DEBUG base:41]
    236 generated console scripts pip pip3.11 pip3 pip-3.11 [DEBUG base:41]
    236 add activators for Bash, CShell, Fish, Nushell, PowerShell, Python [INFO session:61]
    238 write ****/venv_test/pyvenv.cfg [DEBUG pyenv_cfg:30]
    238 	home = ~/.pyenv/versions/3.11.0/bin [DEBUG pyenv_cfg:34]
    238 	implementation = CPython [DEBUG pyenv_cfg:34]
    238 	version_info = 3.11.0.final.0 [DEBUG pyenv_cfg:34]
    238 	virtualenv = 20.17.0 [DEBUG pyenv_cfg:34]
    238 	include-system-site-packages = false [DEBUG pyenv_cfg:34]
    238 	base-prefix = ~/.pyenv/versions/3.11.0 [DEBUG pyenv_cfg:34]
    238 	base-exec-prefix = ~/.pyenv/versions/3.11.0 [DEBUG pyenv_cfg:34]
    238 	base-executable = ~/.pyenv/versions/3.11.0/bin/python3.11 [DEBUG pyenv_cfg:34]
    238 created virtual environment CPython3.11.0.final.0-64 in 177ms
      creator CPython3Posix(dest=****/venv_test, clear=False, no_vcs_ignore=False, global=False)
      seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=~/.local/share/virtualenv)
        added seed packages: pip==22.3.1, setuptools==65.6.3, wheel==0.38.4
      activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator [WARNING __main__:17]
    
    bug help-wanted 
    opened by robsdedude 1
  • Windows PATH environment variable is not set correctly

    Windows PATH environment variable is not set correctly

    Issue

    Windows PATH environment variable is not set correctly

    Description

    I have created a virtualenv using this command on Windows: virtualenv venv and I activated it: venv\Scripts\activate.bat

    The full path of the virtualenv is this: C:\Users\omerg\Desktop\Ömer\venv

    But when I try to use pip, the system uses global pip installed on C:\Python310\lib\site-packages\pip instead of C:\Users\omerg\Desktop\Ömer\venv\Scripts\pip

    resim

    I am investigating, what I found is that the PATH environment variable is not set correctly.

    My venv\Scripts\activate.bat is something like this:

    @set "VIRTUAL_ENV=C:\Users\omerg\Desktop\Ömer\venv"
    ...
    @set "PATH=%VIRTUAL_ENV%\Scripts;%PATH%"
    

    But when I try to echo the VIRTUAL_ENV or PATH environment variable I am seeing this

    resim

    But when I try to set VIRTUAL_ENV env var manually, there is no problem

    resim

    Environment

    • OS: Windows 11
    • virtualenv 20.16.5

    Output of the virtual environment creation

    Make sure to run the creation with -vvv --with-traceback:

    177 setup logging to NOTSET [DEBUG report:35]
    203 find interpreter for spec PythonSpec(path=C:\Python310\python.exe) [INFO builtin:56]
    203 proposed PythonInfo(spec=CPython3.10.0.final.0-64, exe=C:\Python310\python.exe, platform=win32, version='3.10.0 (tags/v3.10.0:b494f59, Oct  4 2021, 19:00:18) [MSC v.1929 64 bit (AMD64)]', encoding_fs_io=utf-8-utf-8) [INFO builtin:63]
    203 accepted PythonInfo(spec=CPython3.10.0.final.0-64, exe=C:\Python310\python.exe, platform=win32, version='3.10.0 (tags/v3.10.0:b494f59, Oct  4 2021, 19:00:18) [MSC v.1929 64 bit (AMD64)]', encoding_fs_io=utf-8-utf-8) [DEBUG builtin:65]
    208 symlink on filesystem does not work [DEBUG info:43]
    209 filesystem is not case-sensitive [DEBUG info:24]
    291 create virtual environment via CPython3Windows(dest=C:\Users\omerg\Desktop\Ömer\venv, clear=False, no_vcs_ignore=False, global=False) [INFO session:48]
    291 create folder C:\Users\omerg\Desktop\Ömer\venv\Lib\site-packages [DEBUG _sync:9]
    292 create folder C:\Users\omerg\Desktop\Ömer\venv\Scripts [DEBUG _sync:9]
    293 write C:\Users\omerg\Desktop\Ömer\venv\pyvenv.cfg [DEBUG pyenv_cfg:30]
    293     home = C:\Python310 [DEBUG pyenv_cfg:34]
    293     implementation = CPython [DEBUG pyenv_cfg:34]
    293     version_info = 3.10.0.final.0 [DEBUG pyenv_cfg:34]
    293     virtualenv = 20.16.5 [DEBUG pyenv_cfg:34]
    294     include-system-site-packages = false [DEBUG pyenv_cfg:34]
    294     base-prefix = C:\Python310 [DEBUG pyenv_cfg:34]
    294     base-exec-prefix = C:\Python310 [DEBUG pyenv_cfg:34]
    294     base-executable = C:\Python310\python.exe [DEBUG pyenv_cfg:34]
    295 copy C:\Python310\Lib\venv\scripts\nt\python.exe to C:\Users\omerg\Desktop\Ömer\venv\Scripts\python.exe [DEBUG _sync:36]
    297 copy C:\Python310\Lib\venv\scripts\nt\pythonw.exe to C:\Users\omerg\Desktop\Ömer\venv\Scripts\pythonw.exe [DEBUG _sync:36]
    299 create virtualenv import hook file C:\Users\omerg\Desktop\Ömer\venv\Lib\site-packages\_virtualenv.pth [DEBUG api:89]
    300 create C:\Users\omerg\Desktop\Ömer\venv\Lib\site-packages\_virtualenv.py [DEBUG api:92]
    302 ============================== target debug ============================== [DEBUG session:50]
    303 debug via 'C:\Users\omerg\Desktop\Ömer\venv\Scripts\python.exe' 'C:\Python310\lib\site-packages\virtualenv\create\debug.py' [DEBUG creator:197]
    303 {
      "sys": {
        "executable": "C:\\Users\\omerg\\Desktop\\\u00d6mer\\venv\\Scripts\\python.exe",
        "_base_executable": "C:\\Python310\\python.exe",
        "prefix": "C:\\Users\\omerg\\Desktop\\\u00d6mer\\venv",
        "base_prefix": "C:\\Python310",
        "real_prefix": null,
        "exec_prefix": "C:\\Users\\omerg\\Desktop\\\u00d6mer\\venv",
        "base_exec_prefix": "C:\\Python310",
        "path": [
          "C:\\Python310\\python310.zip",
          "C:\\Python310\\DLLs",
          "C:\\Python310\\lib",
          "C:\\Python310",
          "C:\\Users\\omerg\\Desktop\\\u00d6mer\\venv",
          "C:\\Users\\omerg\\Desktop\\\u00d6mer\\venv\\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": "cp1254"
      },
      "version": "3.10.0 (tags/v3.10.0:b494f59, Oct  4 2021, 19:00:18) [MSC v.1929 64 bit (AMD64)]",
      "makefile_filename": "C:\\Python310\\Lib\\config\\Makefile",
      "os": "<module 'os' from 'C:\\\\Python310\\\\lib\\\\os.py'>",
      "site": "<module 'site' from 'C:\\\\Python310\\\\lib\\\\site.py'>",
      "datetime": "<module 'datetime' from 'C:\\\\Python310\\\\lib\\\\datetime.py'>",
      "math": "<module 'math' (built-in)>",
      "json": "<module 'json' from 'C:\\\\Python310\\\\lib\\\\json\\\\__init__.py'>"
    } [DEBUG session:51]
    459 add seed packages via FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=C:\Users\omerg\AppData\Local\pypa\virtualenv) [INFO session:55]
    466 got embed update of distribution pip from C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\embed\3\pip.json [DEBUG via_disk_folder:129]
    467 got embed update of distribution setuptools from C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\embed\3\setuptools.json [DEBUG via_disk_folder:129]
    467 got embed update of distribution wheel from C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\embed\3\wheel.json [DEBUG via_disk_folder:129]
    476 got embed update of distribution pip from C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\embed\3\pip.json [DEBUG via_disk_folder:129]
    476 got embed update of distribution setuptools from C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\embed\3\setuptools.json [DEBUG via_disk_folder:129]
    477 got embed update of distribution wheel from C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\embed\3\wheel.json [DEBUG via_disk_folder:129]
    479 install pip from wheel C:\Python310\lib\site-packages\virtualenv\seed\wheels\embed\pip-22.2.2-py3-none-any.whl via CopyPipInstall [DEBUG via_app_data:47]
    480 install setuptools from wheel C:\Python310\lib\site-packages\virtualenv\seed\wheels\embed\setuptools-65.3.0-py3-none-any.whl via CopyPipInstall [DEBUG via_app_data:47]
    480 install wheel from wheel C:\Python310\lib\site-packages\virtualenv\seed\wheels\embed\wheel-0.37.1-py2.py3-none-any.whl via CopyPipInstall [DEBUG via_app_data:47]
    481 Attempting to acquire lock 2582021659696 on C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\pip-22.2.2-py3-none-any.lock [DEBUG _api:172]
    481 Attempting to acquire lock 2582021661808 on C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\setuptools-65.3.0-py3-none-any.lock [DEBUG _api:172]
    482 Lock 2582021659696 acquired on C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\pip-22.2.2-py3-none-any.lock [DEBUG _api:176]
    482 Lock 2582021661808 acquired on C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\setuptools-65.3.0-py3-none-any.lock [DEBUG _api:176]
    482 Attempting to acquire lock 2582021662816 on C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\wheel-0.37.1-py2.py3-none-any.lock [DEBUG _api:172]
    483 Attempting to release lock 2582021659696 on C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\pip-22.2.2-py3-none-any.lock [DEBUG _api:209]
    483 Attempting to release lock 2582021661808 on C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\setuptools-65.3.0-py3-none-any.lock [DEBUG _api:209]
    483 Lock 2582021662816 acquired on C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\wheel-0.37.1-py2.py3-none-any.lock [DEBUG _api:176]
    484 Lock 2582021659696 released on C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\pip-22.2.2-py3-none-any.lock [DEBUG _api:212]
    484 Lock 2582021661808 released on C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\setuptools-65.3.0-py3-none-any.lock [DEBUG _api:212]
    485 Attempting to release lock 2582021662816 on C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\wheel-0.37.1-py2.py3-none-any.lock [DEBUG _api:209]
    485 copy directory C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\pip-22.2.2-py3-none-any\pip to C:\Users\omerg\Desktop\Ömer\venv\Lib\site-packages\pip [DEBUG _sync:36]
    486 Lock 2582021662816 released on C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\wheel-0.37.1-py2.py3-none-any.lock [DEBUG _api:212]
    486 copy C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\setuptools-65.3.0-py3-none-any\distutils-precedence.pth to C:\Users\omerg\Desktop\Ömer\venv\Lib\site-packages\distutils-precedence.pth [DEBUG _sync:36]
    487 copy directory C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\wheel-0.37.1-py2.py3-none-any\wheel to C:\Users\omerg\Desktop\Ömer\venv\Lib\site-packages\wheel [DEBUG _sync:36]
    488 copy directory C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\setuptools-65.3.0-py3-none-any\pkg_resources to C:\Users\omerg\Desktop\Ömer\venv\Lib\site-packages\pkg_resources [DEBUG _sync:36]
    520 copy directory C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\wheel-0.37.1-py2.py3-none-any\wheel-0.37.1.dist-info to C:\Users\omerg\Desktop\Ömer\venv\Lib\site-packages\wheel-0.37.1.dist-info [DEBUG _sync:36]
    531 copy C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\wheel-0.37.1-py2.py3-none-any\wheel-0.37.1.virtualenv to C:\Users\omerg\Desktop\Ömer\venv\Lib\site-packages\wheel-0.37.1.virtualenv [DEBUG _sync:36]
    540 generated console scripts wheel.exe wheel3.10.exe wheel3.exe wheel-3.10.exe [DEBUG base:41]
    567 copy directory C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\setuptools-65.3.0-py3-none-any\setuptools to C:\Users\omerg\Desktop\Ömer\venv\Lib\site-packages\setuptools [DEBUG _sync:36]
    814 copy directory C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\setuptools-65.3.0-py3-none-any\setuptools-65.3.0.dist-info to C:\Users\omerg\Desktop\Ömer\venv\Lib\site-packages\setuptools-65.3.0.dist-info [DEBUG _sync:36]
    825 copy C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\setuptools-65.3.0-py3-none-any\setuptools-65.3.0.virtualenv to C:\Users\omerg\Desktop\Ömer\venv\Lib\site-packages\setuptools-65.3.0.virtualenv [DEBUG _sync:36]
    826 copy directory C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\setuptools-65.3.0-py3-none-any\_distutils_hack to C:\Users\omerg\Desktop\Ömer\venv\Lib\site-packages\_distutils_hack [DEBUG _sync:36]
    833 generated console scripts  [DEBUG base:41]
    1118 copy directory C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\pip-22.2.2-py3-none-any\pip-22.2.2.dist-info to C:\Users\omerg\Desktop\Ömer\venv\Lib\site-packages\pip-22.2.2.dist-info [DEBUG _sync:36]
    1129 copy C:\Users\omerg\AppData\Local\pypa\virtualenv\wheel\3.10\image\1\CopyPipInstall\pip-22.2.2-py3-none-any\pip-22.2.2.virtualenv to C:\Users\omerg\Desktop\Ömer\venv\Lib\site-packages\pip-22.2.2.virtualenv [DEBUG _sync:36]
    1135 generated console scripts pip.exe pip3.10.exe pip3.exe pip-3.10.exe [DEBUG base:41]
    1136 add activators for Bash, Batch, Fish, Nushell, PowerShell, Python [INFO session:61]
    1145 write C:\Users\omerg\Desktop\Ömer\venv\pyvenv.cfg [DEBUG pyenv_cfg:30]
    1145    home = C:\Python310 [DEBUG pyenv_cfg:34]
    1146    implementation = CPython [DEBUG pyenv_cfg:34]
    1146    version_info = 3.10.0.final.0 [DEBUG pyenv_cfg:34]
    1147    virtualenv = 20.16.5 [DEBUG pyenv_cfg:34]
    1147    include-system-site-packages = false [DEBUG pyenv_cfg:34]
    1147    base-prefix = C:\Python310 [DEBUG pyenv_cfg:34]
    1148    base-exec-prefix = C:\Python310 [DEBUG pyenv_cfg:34]
    1148    base-executable = C:\Python310\python.exe [DEBUG pyenv_cfg:34]
    1149 created virtual environment CPython3.10.0.final.0-64 in 978ms
      creator CPython3Windows(dest=C:\Users\omerg\Desktop\Ömer\venv, clear=False, no_vcs_ignore=False, global=False)
      seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=C:\Users\omerg\AppData\Local\pypa\virtualenv)
        added seed packages: pip==22.2.2, setuptools==65.3.0, wheel==0.37.1
      activators BashActivator,BatchActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator [WARNING __main__:17]
    
    bug 
    opened by OmerFI 2
Releases(20.17.0)
  • 20.17.0(Nov 28, 2022)

    What's Changed

    • release 20.16.7 by @gaborbernat in https://github.com/pypa/virtualenv/pull/2445
    • Change Nushell activation script to module by @kubouch in https://github.com/pypa/virtualenv/pull/2422
    • Fix operator in Nushell activation script by @kubouch in https://github.com/pypa/virtualenv/pull/2450
    • Do not use deprecated API by @gaborbernat in https://github.com/pypa/virtualenv/pull/2448
    • Bump setuptools by @gaborbernat in https://github.com/pypa/virtualenv/pull/2451

    Full Changelog: https://github.com/pypa/virtualenv/compare/20.16.7...20.17.0

    Source code(tar.gz)
    Source code(zip)
  • 20.16.7(Nov 12, 2022)

    What's Changed

    • release 20.16.6 by @gaborbernat in https://github.com/pypa/virtualenv/pull/2437
    • Replace six in tests/unit/test_run.py by @cjmayo in https://github.com/pypa/virtualenv/pull/2439
    • Try to fix Nushell install by @kubouch in https://github.com/pypa/virtualenv/pull/2444
    • Try alternate filenames for system_executable by @vfazio in https://github.com/pypa/virtualenv/pull/2442
    • Bump embedded by @gaborbernat in https://github.com/pypa/virtualenv/pull/2443
    • Set 'home' to parent directory of system_executable by @vfazio in https://github.com/pypa/virtualenv/pull/2441

    New Contributors

    • @cjmayo made their first contribution in https://github.com/pypa/virtualenv/pull/2439
    • @vfazio made their first contribution in https://github.com/pypa/virtualenv/pull/2442

    Full Changelog: https://github.com/pypa/virtualenv/compare/20.16.6...20.16.7

    Source code(tar.gz)
    Source code(zip)
  • 20.16.6(Nov 12, 2022)

    What's Changed

    • release 20.16.5 by @gaborbernat in https://github.com/pypa/virtualenv/pull/2413
    • fix building python3.10 virtualenvs on debian derivatives by @asottile in https://github.com/pypa/virtualenv/pull/2415
    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/pypa/virtualenv/pull/2423
    • Allow empty string as version for find_compatible_in_house by @schaap in https://github.com/pypa/virtualenv/pull/2430
    • Fix test_csh when running with the original csh by @kulikjak in https://github.com/pypa/virtualenv/pull/2418
    • Remove outdated PyPy stdlib overrides by @mattip in https://github.com/pypa/virtualenv/pull/2426
    • Upgrade pip and setuptools by @gaborbernat in https://github.com/pypa/virtualenv/pull/2434

    New Contributors

    • @schaap made their first contribution in https://github.com/pypa/virtualenv/pull/2430
    • @kulikjak made their first contribution in https://github.com/pypa/virtualenv/pull/2418

    Full Changelog: https://github.com/pypa/virtualenv/compare/20.16.5...20.16.6

    Source code(tar.gz)
    Source code(zip)
  • 20.16.5(Sep 8, 2022)

    What's Changed

    • release 20.16.4 by @gaborbernat in https://github.com/pypa/virtualenv/pull/2407
    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/pypa/virtualenv/pull/2410
    • Do not turn echo off for subsequent commands in batch activators (#2411) by @pawelszramowski in https://github.com/pypa/virtualenv/pull/2412

    New Contributors

    • @pawelszramowski made their first contribution in https://github.com/pypa/virtualenv/pull/2412

    Full Changelog: https://github.com/pypa/virtualenv/compare/20.16.4...20.16.5

    Source code(tar.gz)
    Source code(zip)
  • 20.16.4(Aug 30, 2022)

    What's Changed

    • release 20.16.3 by @gaborbernat in https://github.com/pypa/virtualenv/pull/2396
    • Remove universal wheel, python 2 is unsupported by @gopackgo90 in https://github.com/pypa/virtualenv/pull/2402
    • Bump setuptools by @gaborbernat in https://github.com/pypa/virtualenv/pull/2405

    New Contributors

    • @gopackgo90 made their first contribution in https://github.com/pypa/virtualenv/pull/2402

    Full Changelog: https://github.com/pypa/virtualenv/compare/20.16.3...20.16.4

    Source code(tar.gz)
    Source code(zip)
  • 20.16.3(Aug 30, 2022)

    What's Changed

    • release 20.16.2 by @gaborbernat in https://github.com/pypa/virtualenv/pull/2392
    • Bump dependencies and build tools by @gaborbernat in https://github.com/pypa/virtualenv/pull/2394
    • Bump embed pip and setuptools by @gaborbernat in https://github.com/pypa/virtualenv/pull/2395

    Full Changelog: https://github.com/pypa/virtualenv/compare/20.16.2...20.16.3

    Source code(tar.gz)
    Source code(zip)
  • 20.16.2(Jul 27, 2022)

    What's Changed

    • release 20.16.1 by @gaborbernat in https://github.com/pypa/virtualenv/pull/2390
    • Bump embed pip by @gaborbernat in https://github.com/pypa/virtualenv/pull/2391

    Full Changelog: https://github.com/pypa/virtualenv/compare/20.16.1...20.16.2

    Source code(tar.gz)
    Source code(zip)
  • 20.16.1(Jul 27, 2022)

    What's Changed

    • release 20.16.0 by @gaborbernat in https://github.com/pypa/virtualenv/pull/2384
    • Test with CPython 3.11 by @gaborbernat in https://github.com/pypa/virtualenv/pull/2388
    • Fix pull request template formatting by @kubouch in https://github.com/pypa/virtualenv/pull/2389
    • Port Nushell activation scripts to 0.67 by @kubouch in https://github.com/pypa/virtualenv/pull/2386

    Full Changelog: https://github.com/pypa/virtualenv/compare/20.16.0...20.16.1

    Source code(tar.gz)
    Source code(zip)
  • 20.16.0(Jul 27, 2022)

    What's Changed

    • release 20.15.1 by @gaborbernat in https://github.com/pypa/virtualenv/pull/2370
    • Delete callout on API stability by @uranusjr in https://github.com/pypa/virtualenv/pull/2374
    • Fix test_py_info to work on Python 3.11 too by @rkucsora in https://github.com/pypa/virtualenv/pull/2380
    • Fix entry point key typo in docs by @uranusjr in https://github.com/pypa/virtualenv/pull/2373
    • Add notes in changelog about site after rewrite by @YouJiacheng in https://github.com/pypa/virtualenv/pull/2379
    • docs: fix simple typo, developent -> development by @timgates42 in https://github.com/pypa/virtualenv/pull/2377
    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/pypa/virtualenv/pull/2375
    • Drop support of running under Python 2.7 by @gaborbernat in https://github.com/pypa/virtualenv/pull/2382
    • Upgrade embed setuptools and pip by @gaborbernat in https://github.com/pypa/virtualenv/pull/2383

    New Contributors

    • @uranusjr made their first contribution in https://github.com/pypa/virtualenv/pull/2374
    • @rkucsora made their first contribution in https://github.com/pypa/virtualenv/pull/2380
    • @YouJiacheng made their first contribution in https://github.com/pypa/virtualenv/pull/2379
    • @timgates42 made their first contribution in https://github.com/pypa/virtualenv/pull/2377

    Full Changelog: https://github.com/pypa/virtualenv/compare/20.15.1...20.16.0

    Source code(tar.gz)
    Source code(zip)
  • 20.15.0(Jun 25, 2022)

    What's Changed

    • release 20.14.1 by @gaborbernat in https://github.com/pypa/virtualenv/pull/2331
    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/pypa/virtualenv/pull/2332
    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/pypa/virtualenv/pull/2341
    • Add dependabot by @gaborbernat in https://github.com/pypa/virtualenv/pull/2355
    • Bump actions/setup-python from 2 to 4 by @dependabot in https://github.com/pypa/virtualenv/pull/2360
    • Bump actions/checkout from 2 to 3 by @dependabot in https://github.com/pypa/virtualenv/pull/2359
    • Bump pre-commit/action from 2.0.3 to 3.0.0 by @dependabot in https://github.com/pypa/virtualenv/pull/2358
    • Bump actions/download-artifact from 2 to 3 by @dependabot in https://github.com/pypa/virtualenv/pull/2357
    • Bump actions/upload-artifact from 2 to 3 by @dependabot in https://github.com/pypa/virtualenv/pull/2356
    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/pypa/virtualenv/pull/2362
    • Fix broken Nushell installation in CI by @kubouch in https://github.com/pypa/virtualenv/pull/2364
    • Fixes for Windows PyPy 3.6 by @reksar in https://github.com/pypa/virtualenv/pull/2363
    • Windows embedable support by @reksar in https://github.com/pypa/virtualenv/pull/2353
    • Bump setuptools by @gaborbernat in https://github.com/pypa/virtualenv/pull/2365

    New Contributors

    • @dependabot made their first contribution in https://github.com/pypa/virtualenv/pull/2360
    • @reksar made their first contribution in https://github.com/pypa/virtualenv/pull/2363

    Full Changelog: https://github.com/pypa/virtualenv/compare/20.14.1...20.15.0

    Source code(tar.gz)
    Source code(zip)
  • 20.0.27(Jul 15, 2020)

  • 16.7.10(Feb 26, 2020)

Owner
Python Packaging Authority
Python Packaging Authority
A PipEnv Environment Switcher

Pipes Pipenv Environment Switcher ⚡ Overview Pipes is a Pipenv companion CLI tool that provides a quick way to jump between your pipenv powered projec

Gui Talarico 131 Sep 04, 2022
to-requirements.txt allows to automatically add and delete modules to requirements.txt installing them using pip.

to-requirements.txt | Automatically update requirements.txt to-requirements.txt allows to automatically add and delete modules to requirements.txt ins

Ilya 16 Dec 29, 2022
Virtual Python Environment builder

virtualenv A tool for creating isolated virtual python environments. Installation Documentation Changelog Issues PyPI Github Code of Conduct Everyone

Python Packaging Authority 4.3k Dec 30, 2022
An experimental technique for efficiently exploring neural architectures.

SMASH: One-Shot Model Architecture Search through HyperNetworks An experimental technique for efficiently exploring neural architectures. This reposit

Andy Brock 478 Aug 04, 2022
PyDynamica is a freely available agent-based economy simulation

PyDynamica PyDynamica is a pure python implementation of Sociodynamica, a virtual environment to simulate a simple economy with minimal dependencies.

4 Sep 10, 2022
Python Development Workflow for Humans.

Pipenv: Python Development Workflow for Humans [ ~ Dependency Scanning by PyUp.io ~ ] Pipenv is a tool that aims to bring the best of all packaging wo

Python Packaging Authority 23.5k Jan 01, 2023
Simple Python version management

Simple Python Version Management: pyenv pyenv lets you easily switch between multiple versions of Python. It's simple, unobtrusive, and follows the UN

pyenv 30.1k Jan 04, 2023
A simple but powerful Python packer to run any project with any virtualenv dependencies anywhwere.

PyEmpaq A simple but powerful Python packer to run any project with any virtualenv dependencies anywhwere. With PyEmpaq you can convert any Python pro

Facundo Batista 23 Sep 22, 2022
This tool is used to install `pyenv` and friends.

pyenv installer This tool installs pyenv and friends. It is inspired by rbenv-installer. Prerequisites In general, compiling your own Python interpret

pyenv 3.5k Jan 03, 2023
a pyenv plugin to manage virtualenv (a.k.a. python-virtualenv)

pyenv-virtualenv pyenv-virtualenv is a pyenv plugin that provides features to manage virtualenvs and conda environments for Python on UNIX-like system

pyenv 5.3k Jan 08, 2023
Manage python virtual environments on the working notebook server

notebook-environments Manage python virtual environments on the working notebook server. Installation It is recommended to use this package together w

Vladislav Punko 44 Nov 02, 2022
A pythonic interface to high-throughput virtual screening software

pyscreener A pythonic interface to high-throughput virtual screening software Overview This repository contains the source of pyscreener, both a libra

56 Dec 15, 2022
Fish shell tool for managing Python virtual environments

VirtualFish VirtualFish is a Python virtual environment manager for the Fish shell. You can get started by reading the documentation. (It’s quite shor

Justin Mayer 968 Dec 24, 2022
macOS development environment setup: Setting up a new developer machine can be an ad-hoc, manual, and time-consuming process.

dev-setup Motivation Setting up a new developer machine can be an ad-hoc, manual, and time-consuming process. dev-setup aims to simplify the process w

Donne Martin 5.9k Jan 02, 2023
A fast and easy python virtual environment creator for linux with some pre-installed libraries.

python-venv-creator A fast and easy python virtual environment created for linux with some optional pre-installed libraries. Dependencies: The followi

2 Apr 19, 2022
Ready-to-run Docker images containing Jupyter applications

Jupyter Docker Stacks are a set of ready-to-run Docker images containing Jupyter applications and interactive computing tools.

Project Jupyter 7k Jan 03, 2023
The GNS3 server manages emulators such as Dynamips, VirtualBox or Qemu/KVM

GNS3-server This is the GNS3 server repository. The GNS3 server manages emulators such as Dynamips, VirtualBox or Qemu/KVM. Clients like the GNS3 GUI

GNS3 644 Dec 30, 2022
Define requirements inside your python code and scriptenv makes them ready to import.

scriptenv Define requirements inside your python code and scriptenv makes them ready to import. Getting Started Install scriptenv $ pip install script

Stefan Hoelzl 6 Nov 04, 2022
Run a command in the named virtualenv.

Vex Run a command in the named virtualenv. vex is an alternative to virtualenv's source wherever/bin/activate and deactivate, and virtualenvwrapper's

Sasha Hart 374 Dec 21, 2022
Python virtualenvs in Debian packages

dh-virtualenv Contents Overview Presentations, Blogs & Other Resources Using dh-virtualenv How does it work? Running tests Building the package in a D

Spotify 1.5k Jan 02, 2023