Sorry for the late response on this. Running the -m venv and then -m pip works. Still doesn't work with the built-in pip module, but at least this is a workaround.
Thanks On Thursday, November 11, 2021 at 3:47:28 PM UTC-6 [email protected] wrote: > Drop the virtualenv command and try 'python3 -m venv' instead > > > On Thu, 11 Nov 2021 at 18:08, Mike Spitzer <[email protected]> wrote: > >> All actions with the pip module (other than creating the venv) apply to >> the user context and not the venv on a Mac. The details below are for the >> pip module. Running the commands when logged into the system works as >> expected and using those commands with both the command and shell modules >> results in the same outcome as the pip module. There's something different >> about the way it's being interpreted through Ansible. The same role works >> fine in Linux. Have tried this on 2 different Macs, both running Catalina. >> >> $ ansible --version >> ansible [core 2.11.6] config file = None configured module search path = >> ['/Users/spitzer/.ansible/plugins/modules', >> '/usr/share/ansible/plugins/modules'] ansible python module location = >> /Users/spitzer/.virtualenvs/ansible460/lib/python3.8/site-packages/ansible >> ansible collection location = >> /Users/spitzer/.ansible/collections:/usr/share/ansible/collections >> executable location = /Users/spitzer/.virtualenvs/ansible460/bin/ansible >> python version = 3.8.12 (default, Sep 1 2021, 07:26:09) [Clang 11.0.3 >> (clang-1103.0.32.62)] jinja version = 3.0.1 libyaml = True >> >> So, a minimal role to duplicate this is: >> >> --- >> >> # Test pip role >> >> - name: Create venvs root dir >> file: path: "{{ temp_dir }}/venvs" >> state: directory mode: "0755" >> >> - name: pip install requests >> pip: name: requests >> state: latest >> virtualenv: "{{ temp_dir }}/venvs/test-env" >> >> The pip install does create the venv where expected and all permissions >> look good, but during the install of 'requests' it gives me "Defaulting to >> user installation because normal site-packages is not writeable" and then >> installs it under user instead of the venv. >> >> TASK [test_build : Create venvs dir] >> ****************************************************************************************************************************************** >> ok: [devops-mac] => {"changed": false, "gid": 20, "group": "staff", >> "mode": "0755", "owner": "spitzer", "path": >> "/Users/spitzer/ansible_tmp/venvs", "size": 96, "state": "directory", >> "uid": 501} >> >> TASK [test_build : pip install requests] >> ******************************************************************************************************************************* >> ok: [devops-mac] => {"changed": false, "cmd": >> ["/Users/spitzer/ansible_tmp/venvs/test-env/bin/pip3", "install", "-U", >> "requests"], "name": ["requests"], "requirements": null, "state": "latest", >> "stderr": " WARNING: The script normalizer is installed in >> '/Users/spitzer/Library/Python/3.8/bin' which is not on PATH.\n Consider >> adding this directory to PATH or, if you prefer to suppress this warning, >> use --no-warn-script-location.\n", "stderr_lines": [" WARNING: The script >> normalizer is installed in '/Users/spitzer/Library/Python/3.8/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."], "stdout": >> "created virtual environment CPython3.8.2.final.0-64 in 398ms\n creator >> CPython3macOsFramework(dest=/Users/spitzer/ansible_tmp/venvs/test-env, >> clear=False, no_vcs_ignore=False, global=False)\n seeder >> FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, >> via=copy, app_data_dir=/Users/spitzer/Library/Application >> Support/virtualenv)\n added seed packages: pip==21.3.1, >> setuptools==58.3.0, wheel==0.37.0\n activators >> BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator\nDefaulting >> >> to user installation because normal site-packages is not >> writeable\nRequirement already satisfied: requests in >> /Users/spitzer/Library/Python/3.8/lib/python/site-packages >> (2.26.0)\nCollecting idna<4,>=2.5\n Using cached idna-3.3-py3-none-any.whl >> (61 kB)\nRequirement already satisfied: urllib3<1.27,>=1.21.1 in >> /Users/spitzer/Library/Python/3.8/lib/python/site-packages (from requests) >> (1.26.7)\nCollecting charset-normalizer~=2.0.0\n Using cached >> charset_normalizer-2.0.7-py3-none-any.whl (38 kB)\nCollecting >> certifi>=2017.4.17\n Using cached certifi-2021.10.8-py2.py3-none-any.whl >> (149 kB)\nInstalling collected packages: idna, charset-normalizer, >> certifi\nSuccessfully installed certifi-2021.10.8 charset-normalizer-2.0.7 >> idna-3.3\n", "stdout_lines": ["created virtual environment >> CPython3.8.2.final.0-64 in 398ms", " creator >> CPython3macOsFramework(dest=/Users/spitzer/ansible_tmp/venvs/test-env, >> clear=False, no_vcs_ignore=False, global=False)", " seeder >> FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, >> via=copy, app_data_dir=/Users/spitzer/Library/Application >> Support/virtualenv)", " added seed packages: pip==21.3.1, >> setuptools==58.3.0, wheel==0.37.0", " activators >> BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator", >> >> "Defaulting to user installation because normal site-packages is not >> writeable", "Requirement already satisfied: requests in >> /Users/spitzer/Library/Python/3.8/lib/python/site-packages (2.26.0)", >> "Collecting idna<4,>=2.5", " Using cached idna-3.3-py3-none-any.whl (61 >> kB)", "Requirement already satisfied: urllib3<1.27,>=1.21.1 in >> /Users/spitzer/Library/Python/3.8/lib/python/site-packages (from requests) >> (1.26.7)", "Collecting charset-normalizer~=2.0.0", " Using cached >> charset_normalizer-2.0.7-py3-none-any.whl (38 kB)", "Collecting >> certifi>=2017.4.17", " Using cached certifi-2021.10.8-py2.py3-none-any.whl >> (149 kB)", "Installing collected packages: idna, charset-normalizer, >> certifi", "Successfully installed certifi-2021.10.8 >> charset-normalizer-2.0.7 idna-3.3"], "version": null, "virtualenv": >> "/Users/spitzer/ansible_tmp/venvs/test-env"} >> >> On the same machine, doing the following by hand works: >> $ cd ~/ansible_tmp >> $ virtualenv test-env >> $ ~/ansible_tmp/test-env/bin/pip3 install requests >> >> Running those exact commands using the shell module still results in the >> user install. Have also tried with pip module, explicitly setting the pip3 >> binary with the same result. >> >> Also, I completely removed the test-env directory before every test. >> Also, also, I've done this with the built-in Python 3.8 install, as well as >> the homebrew and macports 3.8 installs and forcing the correct python3 >> binary in the pip module. All had the same results. >> >> Does anybody have any idea what I'm doing wrong here? >> >> Thanks >> -mS >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Ansible Project" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/ansible-project/dd5862ed-9ed4-44f5-9edb-650c0590fbd9n%40googlegroups.com >> >> <https://groups.google.com/d/msgid/ansible-project/dd5862ed-9ed4-44f5-9edb-650c0590fbd9n%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- > Sent from a mobile device - please excuse the brevity, spelling and > punctuation. > -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/600b8245-1ffb-406f-bca4-d76dea98b39cn%40googlegroups.com.
