larry
larry

Reputation: 3727

How can I activate a virtualenv in Linux?

I have been searching and tried various alternatives without success and spent several days on it now; it is driving me mad.

I am running on Red Hat Linux with Python 2.5.2. I began using the most recent Virtualenv, but I could not activate it. I found somewhere suggesting I needed an earlier version, so I have used Virtualenv 1.6.4 as that should work with Python 2.6.

It seems to install the virtual environment ok

python virtualenv-1.6.4/virtualenv.py virtual

Output:

New python executable in virtual/bin/python
Installing setuptools............done.
Installing pip...............done.

The environment looks ok

cd virtual
dir

Output:

bin  include  lib

Trying to activate

. bin/activate

Output:

/bin/.: Permission denied.

I checked chmod

cd bin
ls -l

Output:

total 3160
 -rw-r--r--    1 necrailk biz12        2130 Jan 30 11:38 activate
 -rw-r--r--    1 necrailk biz12        1050 Jan 30 11:38 activate.csh
 -rw-r--r--    1 necrailk biz12        2869 Jan 30 11:38 activate.fish
 -rw-r--r-

It was a problem, so I changed it

ls -l

Output:

total 3160
-rwxr--r--    1 necrailk biz12        2130 Jan 30 11:38 activate
-rw-r--r--    1 necrailk biz12        1050 Jan 30 11:38 activate.csh
-rw-r--r--    1 necrailk biz12        2869 Jan 30 11:38 activate.fish
-rw-r--r--    1 necrailk biz12        1005 Jan 30 11:38 activate_this.py
-rwxr-xr-x    1 necrailk biz

Tring activate again

. bin/activate

Output:

/bin/.: Permission denied.

Still no joy...

Upvotes: 371

Views: 1362531

Answers (19)

Tommy Hansen
Tommy Hansen

Reputation: 151

This is for Git Bash running on Windows Server 2022. There is a question for Git Bash but it links to here as a duplicate.

Everything works fine after . my-venv/Scripts/activate if I stay on the drive with the venv folder. But if I try to work on another drive it falls apart:

$ which python
/f/\my-venv/Scripts/python
$ cd /c
$ which python
/c/Users/myuser/AppData/Local/Programs/Python/Python311/python

Not sure if this is a known problem or something specific to my system, but in case somebody else runs into it, there it is...

(I worked around it by keeping code & venv on the same drive).

Upvotes: -1

Jeffery White
Jeffery White

Reputation: 483

Run this code. It will get activated if you are on a Windows machine:

. venv/Scripts/activate

Run this code. It will get activated if you are on a Linux or Mac machine:

. venv/bin/activate

Upvotes: 32

viraj ghorpade
viraj ghorpade

Reputation: 523

I was getting this error "-sh: 13: source: not found"

Resolution is to first login as sudo

  1. $sudo su

Then execute the command

  1. #source virtual_env_name/bin/activate

Upvotes: 4

user5683940
user5683940

Reputation:

mkdir <YOURPROJECT>: Create a new project

cd <YOURPROJECT>: Change directory to that project

virtualenv <NEWVIRTUALENV>: Creating a new virtualenv

source <NEWVIRTUALENV>/bin/activate: Activating that new virtualenv

Upvotes: 23

Aly Radwan
Aly Radwan

Reputation: 209

  1. Open a PowerShell window and navigate to your application folder
  2. Enter your virtualenv folder, for example: cd .\venv\Scripts\
  3. Activate the virtual environment by typing .\activate

Upvotes: 1

Muhammad Faizan Fareed
Muhammad Faizan Fareed

Reputation: 3748

Windows 10

In Windows, these directories are created:

Windows 10 virtual environment directories

To activate the virtual environment in Windows 10.

down\scripts\activate

The \scripts directory contains the activate file.

Linux Ubuntu

In Ubuntu, these directories are created:

Linux Ubuntu virtual environment directories

To activate the virtual environment in Linux Ubuntu.

source ./bin/activate

The /bin directory contains the activate file.


The virtual environment can be copied from Windows to Linux Ubuntu and vice versa

If the virtual environment folder is copied from Windows to Linux Ubuntu then according to directories:

source ./down/Scripts/activate

Upvotes: 6

sushant097
sushant097

Reputation: 3736

For Windows, you can perform it as:

To create the virtual environment as: virtualenv envName –python=python.exe (if not, create an environment variable)

To activate the virtual environment: \path\to\envName\Scripts\activate

To deactivate the virtual environment: \path\to\env\Scripts\deactivate

It works fine on the new Python version.

Upvotes: 13

sunil_kumar_sahu
sunil_kumar_sahu

Reputation: 51

On Mac, change the shell to Bash (keep note that virtual env works only in the Bash shell)

. venv/bin/activate

.: Command not found.

source venv/bin/activate

Badly placed ()'s.

bash
source venv/bin/activate

New prompt:

(venv) bash-3.2$

Bingo, it worked. See, the prompt changed.

On Ubuntu:

source toolsenv/bin/activate

New prompt:

(toolsenv) user@local_host~/tools$

Note: the prompt changed

Upvotes: 5

Manas
Manas

Reputation: 69

Create your own Python virtual environment called <your environment _name>:.

I have given it the name "VE".

git clone https://github.com/pypa/virtualenv.git
python virtualenv.py VE

To activate your new virtual environment, run (notice it's not ./ here):

. VE/bin/activate

Sample output (note prompt changed):

(VE)c34299@a200dblr$

Once your virtual environment is set, you can remove the Virtualenv repository.

Upvotes: 4

Reihan_amn
Reihan_amn

Reputation: 2737

cd to the environment path, and go to the bin folder. At this point, when you use the ls command, you should see the "activate" file.

Now type

source activate

Upvotes: 33

Joy Mukherjee
Joy Mukherjee

Reputation: 191

Instead of ./activate, use source activate:

See this screenshot

Upvotes: 18

Lokendra
Lokendra

Reputation: 79

I had faced the same problem. The main reason being that I created the virtualenv as a "root" user. But later I was trying to activate it using another user.

chmod won't work as you're not the owner of the file, hence the alternative is to use chown (to change the ownership).

For example, if you have your virtualenv created at /home/abc/ENV.

Then cd to /home/abc.

And run the command: chown -Rv [user-to-whom-you want-change-ownership] [folder/filename whose ownership needs to be changed]

In this example, the commands would be: chown -Rv abc ENV

After the ownership is successfully changed, you can simply run source /ENV/bin/./activate and your should be able to activate the virtualenv correctly.

Upvotes: 1

cquptzzq
cquptzzq

Reputation: 1161

You can do

source ./python_env/bin/activate

Or just go to the directory:

cd /python_env/bin/

and then

source ./activate

Upvotes: 115

topherjaynes
topherjaynes

Reputation: 4681

Here is my workflow after creating a folder and cd'ing into it:

virtualenv venv --distribute

Output:

New python executable in venv/bin/python
Installing distribute.........done.
Installing pip................done.

And

source venv/bin/activate
python

Upvotes: 455

Jason
Jason

Reputation: 31

I had trouble getting source /bin/activate running, but then I realized I was using tcsh as my terminal shell instead of Bash.

Once I switched, I was able to activate venv.

Upvotes: 3

user3292534
user3292534

Reputation:

You forgot to do source bin/activate, where source is an executable name. It struck me the first few times as well. It is easy to think that the manual is telling "execute this from root of the environment folder".

There isn't any need to make activate executable via chmod.

Upvotes: 141

Erika
Erika

Reputation: 925

I would recommend virtualenvwrapper as well. It works wonders for me and how I always have problems with activating.

Upvotes: 5

kojiro
kojiro

Reputation: 77089

The problem there is the /bin/. command. That's really weird, since . should always be a link to the directory it's in. (Honestly, unless . is a strange alias or function, I don't even see how it's possible.) It's also a little unusual that your shell doesn't have a . builtin for source.

One quick fix would be to just run the virtualenv in a different shell. (An obvious second advantage being that instead of having to deactivate you can just exit.)

/bin/bash --rcfile bin/activate

If your shell supports it, you may also have the nonstandard source command, which should do the same thing as ., but may not exist. (All said, you should try to figure out why your environment is strange or it will cause you pain again in the future.)

By the way, you didn't need to chmod +x those files. Files only need to be executable if you want to execute them directly. In this case you're trying to launch them from ., so they don't need it.

Upvotes: 22

Gaddenna NK
Gaddenna NK

Reputation: 739

Go to the project directory. In my case microblog is the flask project directory and under microblog directory there should be app and venv folders. then run the below command, This is one worked for me in Ubuntu.

source venv/bin/activate

enter image description here

Upvotes: 47

Related Questions