Search code examples
bashpython-2.7pipubuntu-14.04virtualenv

Issue with activating virtualenv


I installed python environment by means of commands:

SYS_INSTALL="apt-get install -y"
PIP_INSTALL="pip install"

# Be sure to install setuptools before pip to properly replace easy_install.
$SYS_INSTALL git 
$SYS_INSTALL python-dev
$SYS_INSTALL python-setuptools
$SYS_INSTALL python-pip
$PIP_INSTALL virtualenv

also was able to create new virtual environment:

virtualenv .env

However, after running a command like:

. .env/bin/activate

I got

-bash: .env/bin/activate: No such file or directory

After reviewing folder .env/bin I found only one python file. Whole list of files here:

.env/lib:
python2.7

.env/include:
python2.7

.env/bin:
python

What is the issue here?

SOLUTION add --always-copy

virtualenv .env --always-copy


Solution

  • The accepted answer is incomplete! The suggested code left out your error, but didn't comment on it.

    The command . .env/bin/activate would indeed do the same as source on the file activate in the folder .env/bin. In fact, apparently the command "source" is an alias for the command ".", and not the other way around. Note that . here has a space after it, and used differently from the . discussed below (which makes files and folders hidden).

    What I notice is that you are calling your folder .env, which is not standard practice. Files and folders preceded by . are made "hidden" by Mac OS X. Standard practice is to call a virtual environment directory env or venv, and to call the virtual environment specification file .env.

    So, if your spec file is called .env and your virtual environment directory is called env, you can run either

    source env/bin/activate or . env/bin/activate.