pip is installing packages globally instead in virtual environment in windows - python

I had created a project in pycharm using virtualenv environment.
My current location is
(venv) C:\Users\username\Documents\pycode\MyProj1>
Now I am running pip install flask and it is downloading packages in the global environment,i.e., C:\Users\username\AppData\Local\Programs\Python\Python36-32\Lib\site-packages instead of my virtual environment.
I can install packages in the virtual environment only when I go to project interpreter in settings and then adding flask.
Can anyone tell how can I install packages in virtual environment by using pip?

In your Command Prompt enter:
pip install virtualenv
Launch virtualenv
In your Command Prompt navigate to your project:
cd your_project
Within your project:
virtualenv env
Activate your virtualenv:
on Windows, virtualenv creates a batch file
\env\Scripts\activate.bat
to activate virtualenv on Windows, activate script is in the Scripts folder :
\path\to\env\Scripts\activate
Example:
C:\Users\'Username'\venv\Scripts\activate.bat

Related

Already have a python project can I set up a virtual environment?

I already started a python project and I found out about using virtual environments and how it is a good practice. I installed virtualenv and created a new environment. But, my existing project is still running on the default python i.e with global modules and everything. How do you get the project files to run on the virtual environment? I am using VS Code and python 3.10.1
you will have to activate the virtual env and then reinstall all the required packages in the virtual env
You can activate your virtual environment by saying;
source venv/bin/activate
then pip the required packages for your project
pip install package_name
You can see all the packages you have installed with pip freeze
To keep the modules and versions you have installed in a file called requirements.txt;
pip freeze > requirements.txt
You can now install these packages to the environment and project you want with a single command. pip install -r requirements.txt

I cant get studio code to install dotenv with pip install. Error cant find module, how do I fix it please?

PS C:\Users\gwill\OneDrive\Documents\new luno\Luno10> pip install dotenv
Fatal error in launcher: Unable to create process using '"C:\Users\gwill\AppData\Local\Programs\Python\Python310\python.exe" "C:\Users\gwill\AppData\Local\Programs\Python\Python310\Scripts\pip.exe" install dotenv': The system cannot find the file specified.
It should be pip install python-dotenv.
TL;DR;
In the project folder type this step by step depending on the platform (Linux/macOS or Windows):
Command-Line Linux/macOS
Command-Line Windows
Description
python3 -m venv .venv
python -m venv .venv
Creates the virtualenv (in this casethe .venv folder)
. ./.venv/bin/activate(bash/zsh). ./.venv/bin/activate.fish(fish shell)
.venv\Scripts\activate.bat(cmd.exe).venv\Scripts\Activate.ps1(Powershell)
Activates it
pip install dotenv
pip install dotenv
Installs a 3rd partypackage (in thiscase dotenv)
python script.py
python script.py
Runs the script(in this case script.py)
deactivate
deactivate
Deactivates it later
What is a Virtual Environment?
By default, Python installs 3rd-party packages on the System Site Directories. And in most cases, this even requires admin privileges like sudo (Linux/macOS) or Run as Administrator (Windows).
The System Site Directories is the default environment for the installed Python. It's global for all the projects being worked on on the same system.
So, installing the requirements/3rd-party packages from each project on the System Site Directories is going to pollute it. And worse, it could clash versions of the same module dependency between different projects. And could make projects completely unrunnable.
That's why Virtual Environments exist in the first place. The Virtual Environment is a completely separate Site Directories from the System Site Directories and is (should be) exclusive to the project being developed at the moment. The project itself is going to be totally isolated from other Virtual Environments. And even the Python binaries are going to be copied/sym-linked into the Virtual Environment.
Creating Virtual Environments
Adapted from the official documentation:
Since Python 3.3 it's possible to create a Virtual Environment with the standard venv module that comes preinstalled with Python already (Before, the standard way was to use the virtualenv package).
The creation of Virtual Environments is done by executing the command venv:
Linux/macOS
python3 -m venv .venv
Windows
python -m venv .venv
Running this command creates:
The target directory (.venv in this case);
The .venv/bin folder (or .venv\Scripts on Windows) containing a copy/sym-link of the Python binary/binaries;
The Virtual Site Directories (initially empty): .venv/lib/pythonX.Y/site-packages folder (on Windows, this is .venv\Lib\site-packages).
Activating a Virtual Environment
Once a virtual environment has been created, it can be “activated” using a script in the virtual environment’s binary directory. The invocation of the script is platform-specific:
Platform
Shell
Command to activate the Virtual Environment
POSIX
bash/zsh
source .venv/bin/activate
fish
source <venv>/bin/activate.fish
csh/tcsh
source <venv>/bin/activate.csh
PowerShell Core
.venv/bin/Activate.ps1
Windows
cmd.exe
.venv\Scripts\activate.bat
PowerShell
.venv\Scripts\Activate.ps1
As soon as the Virtual Environment is active, every install with pip is going to install on the Virtual Environment, safe from every other Virtual Environment.
Deactivate a Virtual Environment
You can deactivate a virtual environment by typing deactivate in your shell.

cant install requirment python package in virtual environment in another machine

I have created a requirement file from a virtual environment in my laptop machine,
when i want to use it and install package in another machine in create virtual environment , I give an error about cant have a such directory file(in general)
how can i solve this error in general environment(use different version in different environment?
On your second machine (Where you want to install requirements.txt)
Install virtual environment package using this command:
pip install virtualenv
Create a virtual environment:
virtualenv venv
Note: The above command will create virtual environment in your current directory with folder named "venv" (You can use any name).
Activate your virtual environment:
Linux/Mac: source venv/bin/activate
Windows: venv\bin\activate
Install requirements.txt
pip install -r /path/to/requirements.txt

The virtual env doesn't works as expected (env created from python installed from source)

I installed python 3.9.5 from source.
mkdir /projects/python
cd /tmp/Python3.9.5
./configure --prefix=/projects/python && make
make install
From it I created a virtual environment.
virtualenv --python=/projects/python <path/to/new/virtualenv/>
Virtual environment can be activated, running python from environment with builtins works, but packages are installed on the OS python.
I believe the virtual environment is activated because I run ./activate in environment folder and the prompt is changed (name_virtual_env)normal_prompt
which python and pip version returns:
usr/bin/python
usr/bin/pip
not the versions from the virtual environment.
virtualenv you used may be for the previous python installed.
try :
/projects/python/bin/python3 -m pip install virtualenv
/projects/python/bin/virtualenv <path/to/new/virtualenv/>

How to create a Python virtual environment independent of OS and Python version

I am trying to create a virtual environment to run a script which requires Python 3.6. I started off with Pipenv but I am unable to create the same environment on other platforms via the Pipfile.lock or requirements.txt unless the other platform(s) has Python 3.6 installed. I have read this post but I am unsure which direction I should take to create a virtual environment which can be shared and run its own version of Python independent of operating system and version of Python installed on the other platform.
Virtual environments are not portable, they depend on the Python installation you have.
You can't share/distribute virtual environment with others, because you can't control which version of Python others are using.
If you want to distribute your code along with all dependencies including the specific version of Python interpreter, you can use PyInstaller. It is far from perfect and little bit hacky. Also it generates a package which is specific to operating system.
https://pyinstaller.readthedocs.io/en/stable/operating-mode.html
There is also a detailed step-by-step guide on how to use PyInstaller.
https://realpython.com/pyinstaller-python/
This is step-by-step how I use Python virtual environment and share it with co-workers.
To check python and virtualenv presence, run following commands:
which python3
python3 -m pip list | grep env
which virtualenv
Install a python virtual environment builder:
python3 -m pip install virtualenv
Create a virtual environment named venv inside the project's directory: virtualenv venv
To activate this environment use this command inside project's directory: source venv/bin/activate
Install python modules dependencies listed in a requirements.txt:
python3 -m pip install -r requirements.txt
You should activate virtual environment when you working with python in this directory for package installation and for running commands in the project directory. When you need to deactivate the virtual environment do it using deactivate command.
To deactivate environment simply run: deactivate

Categories