I understand that the Poetry project is working with a different version of Python than I have installed.
How might I rectify this issue though? Preferably, Poetry and the project can use the latest Python version.
Terminal
cd /mnt/c/Users/me/Documents/GitHub/project
poetry run python -m project
python3 --version
Output
The currently activated Python version 3.8.10 is not supported by the project (3.8.8).
Trying to find and use a compatible version.
NoCompatiblePythonVersionFound
Poetry was unable to find a compatible version. If you have one, you can explicitly use it via the "env use" command.
at ~/.poetry/lib/poetry/utils/env.py:768 in create_venv
764│ python_minor = ".".join(python_patch.split(".")[:2])
765│ break
766│
767│ if not executable:
→ 768│ raise NoCompatiblePythonVersionFound(
769│ self._poetry.package.python_versions
770│ )
771│
772│ if root_venv:
Python 3.8.10
I need to set up a virtual environment.
To do this in Conda:
conda create -n env_name python=3.8.8
To create a virtual environment using virtualenv you can specify the Python release and point version like so:
virtualenv --python=python3.6 .venv
How can I achieve this using Python3's venv module (as in python3 -m venv .newvenv)? According to the documentation using venv is the recommended way to create virtual environments but I didn't see how I can choose a virtual environement with a specific Python version.
Run venv with whatever Python installation you want to use for the new virtual environment. For example, if you would run your Python 3.6 installation with python3.6, then
python3.6 -m venv whatever
would be how you create a Python 3.6 virtual environment.
I thought to add to this answer when one is using pyenv. In my workflow I use pyenv to have multiple python versions but not to manage virtualenvs. I rather have my python virtual environment in the project's root. With pyenv one can install multiple python versions by running pyenv install 3.8.10 and after that pyenv install 3.9.0. When you run pyenv versions you should get something similar to this
system
* 3.8.10 (set by /Users/<user>/.pyenv/version)
3.8.10/envs/python-test.venv
3.9.0
When working on a project and choosing what python version should be used in that project you can do the following.
$ mkdir my_project && cd my_project
$ pyenv global <version>
$ python --version // should be the version you set as global
$ python -m venv .venv
$ source .venv/bin/activate
I was able to avoid error mentioned in the comments by using the option --without-pip. Then after activating the venv, I installed pip manually with the get-pip.py script.
I have installed python 3.6 at /usr/bin/python3.6 and I am trying to create a virtualenv using this version of python.
I tried virtualenv --python=/usr/bin/python3.6 testenv
and then I activated the virtualenv with source testenv/bin/activate
however when I open the python shell it says the version is 2.7.12
Below is a screenshot
If the virtualenv is activated then shouldn't it be using Python 3.6? What am I missing here?
My Python virtual environments use python3.6 when I create them using virtualenv
~ $ virtualenv my_env
but I need to use python3.5 as 3.6 is not currently supported by Opencv3.
I've tried using the --python=<py_version> flag when creating a virtual environment but this doesn't work.
How do I specify the python (3.x) version to install using virtualenv for Mac and/or Linux?
Assuming that you have installed python3 or any desired version of Python (2.6, 2.7, 3.5, 3.6), Now while creating the virtual environment directly pass the python executable path. Hence here are few valid example
$ virtualenv new_p2_env # Creates a new default python environment (usually python 2)
$ virtualenv -p python3 new_p3_env # Creates a new default python3 (python3 must be a valid command i.e found in the PATH)
And last
# Directly point to any version of python binary, this can be even another virtualenv's bin/python.
$ virtualenv -p /path/to/any/bin/python new_env
Alternatively, I think you could use the specific version of Python itself to create the virtual environment. That way, you'll know for sure it's the correct version:
$ python3.5 -m venv test35
$ ./test35/bin/python
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25)
[GCC 4.2.1 (Apple Inc. build ) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
Reference at https://docs.python.org/3.5/library/venv.html
As of version 3.3, python includes a package named venv. However that package doesn't provide the same functionalities as the traditional virtualenv package.
venv allows creating virtual environments only for the version of python it's installed for.
virtualenv allows creating virtual environments for different versions of python by providing the path to the binary.
Creating virtual envs for different versions of python:
So assuming one has python 2.7 and python 3.6 installed in /path/to/ and wants to create the virtual env named respectively env-py36 with python 3.6 and env-py27 with python 2.7
# create a virtual env with python3's venv :
/path/to/python36/bin/python3 -m venv /my/python-venvs/env-py36
. /my/python-venvs/env-py36/bin/activate
# we're now running python 3's "env-py36" virtual env, we want to install the "virtualenv" package
pip install virtualenv
deactivate
# now use virtualenv to create a virtual environment for python 2.7
/my/python-venvs/env-py36/bin/virtualenv --python=/path/to/python27/bin/python /my/python-venvs/env-py27
Using python 3.3+ venv
Python 3.3+ :
/path/to/python3/bin/python3 -m venv ENV_DIR
Python 3.3 to 3.5 (deprecated in 3.6+) :
/path/to/python3/bin/pyvenv ENV_DIR
Sources:
Creating Virtual Environments
Python 3.3 venv
Python virtualenv package
I working on all ubuntu and MacOS
Ubuntu : virtualenv -p python3.6 environment_file
Mac OS : virtualenv -p python3.6 environment_file
I think it be same
I had this issue (and came here) but under Windows. Python 3.9 was installed on one system but it had issues with code developed under 3.7. I wanted to use a virtual environment to downgrade to 3.7 to help debug the issue. Using Python Launcher for Windows:
py -3.7 -m venv my_env
in the python project folder did the trick for me.
Simple and direct solution:
Just see this video (https://www.youtube.com/watch?v=hC9FBQnOv6o) and follow the python setup download instructions of a particular python version and then use virtualenv <folder_name> -p /python.exe
This command is also shown in the video too.
In Linux:
Suppose you have python 3.8 (or higher) installed on the system, but for a specific task, you need python 3.7 (or lower). The best idea is (not to downgrade) to Create a virtual environment with python 3.7(or any 3.x, change the commands below according to your desired version. Below is an implementation of a virtual environment with python 3.7)
Steps:
Install python 3.7 and it’s virtual environment packages.
sudo apt-get install python3.7-dev python3.7-venv
Find out where your python 3.7 is located by this command:
which python3.7 (Should be something like /usr/bin/python3.7)
Create Virtual Environment in the Home directory.
cd
mkdir virtual_env
/usr/bin/python3.7 -m venv ~/virtual_env/venv_with_python3.7
source ~/virtual_env/venv_with_python3.7/bin/activate
python --version (Should be python 3.7 now)
Done. Python 3.7 can be used in this virtual environment. Type which python, you’ll see you have created python 3.7 in a virtual environment, rather than in the system globally.
Run deactivate when you need to deactivate.
Using anaconda we can create a virtual environment called "py35_env" with Python 3.5 version by running:
conda create --name py35_env python=3.5
I am trying to clone and run a project on my mac.
but on the installation options I have to run:
pip install -r requirements.txt
I get an error and I am pretty sure its because the project runs on python 2.7 while my venv runs on 3.4
(venv)/*
$ python --version
Python 3.4.3
however when I am outside of venv I run am back onto the correct python version:
$ python --version
Python 2.7.6
WHy is venv running 3.4? How can I change venv to not run 3.4 and just run the 2.7
Do I have to update an environment or venv variable on my system? I can't find where python is in my system. Also any advice on what commands to run would be appreciated as I am a bit new to python/django.
perhaps the pip I have in venv is wrong, idk. Any help is appreciated.
You can use the option -p to specify, which version should be used, when you create the virtual environment.
For example:
virtualenv -p python2.7 venv