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/CAL8fbwMMyUD93vtC%2Bid3j8QUrk2stez8q0pUGS%3Do328KtEAAsw%40mail.gmail.com.

Reply via email to