Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialVictor Gavojdea
11,796 Points'virtualenv venv' command returning error "The term 'virtualenv' is not recognized... virtualenv IS installed.
Title. I've already activated it because that's what I thought the problem was.
Victor Gavojdea
11,796 PointsWindows 10. If it makes a difference I'm using PowerShell.
Chris Freeman
Treehouse Moderator 68,441 PointsDepending on where Python is installed, say, "C::\Python3.5", then the "C::\Python3.5\Scripts" directory needs to be added to your PATH.
Or, you could try: "C::\Python3.5\Scripts\virtualenv venv" to run it from the scripts directory.
Victor Gavojdea
11,796 PointsI think I figured it out... I ran PowerShell as an administrator. reinstalled virtualenv and now I think it works.
I have another problem though... inside the venv folder (the one I created when I typed in virtualenv venv) there is no activate.bat file. There IS one in the venv folder that appeared when I installed virtualenv. If I type "C:...\venv\Scripts\nt\activate.bat" It doesn't throw up any errors but I also don't see the (venv) in front of my prompt. Is this because I'm on windows? How will I know that I've activated it correctly?
2 Answers
Chris Freeman
Treehouse Moderator 68,441 PointsLet's try from the top (your prompts may differ). The comments after the "#" do not need to be typed. Where does this stop working for you?
cd ~ # start in your home directory
mkdir testdir # create a test directory called 'testdir'
cd testdir # change to testdir
ls # list empty directory
virtualenv venv # make virtualenv in this directory
ls # list current directory to see new venv directory
ls .\venv\Scripts # list script directory in venv
.\venv\Scripts\activate # activate this venv
Here are the above commands run in a Powershell window:
PS C:\> cd ~ # start in your home directory
PS C:\Users\User> mkdir testdir # create a test directory called 'testdir'
Directory: C:\Users\User
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 11/6/2015 3:45 PM testdir
PS C:\Users\User> cd testdir # change to testdir
PS C:\Users\User\testdir> ls # list empty directory
PS C:\Users\User\testdir> virtualenv venv # make virtualenv in this directory
New python executable in venv\Scripts\python.exe
Installing setuptools, pip...done.
PS C:\Users\User\testdir> ls # list current directory to see new venv directory
Directory: C:\Users\User\testdir
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 11/6/2015 3:46 PM venv
PS C:\Users\User\testdir> ls .\venv\Scripts # list script directory in this venv
Directory: C:\Users\User\testdir\venv\Scripts
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 11/6/2015 3:46 PM 2309 activate
-a--- 11/6/2015 3:46 PM 557 activate.bat
-a--- 11/6/2015 3:46 PM 8252 activate.ps1
-a--- 11/6/2015 3:46 PM 1129 activate_this.py
-a--- 11/6/2015 3:46 PM 348 deactivate.bat
-a--- 11/6/2015 3:46 PM 91519 easy_install-2.7.exe
-a--- 11/6/2015 3:46 PM 91519 easy_install.exe
-a--- 11/6/2015 3:46 PM 91491 pip.exe
-a--- 11/6/2015 3:46 PM 91491 pip2.7.exe
-a--- 11/6/2015 3:46 PM 91491 pip2.exe
-a--- 11/6/2015 3:46 PM 26624 python.exe
-a--- 11/6/2015 3:46 PM 27136 pythonw.exe
PS C:\Users\User\testdir> .\venv\Scripts\activate # activate this venv
(venv) PS C:\Users\User\testdir>
Victor Gavojdea
11,796 Pointsvirtualenv venv almost finishes. I get Installing setuptools, pip, wheel...done. then I get a Traceback ending in OSError: ...setuptools pip wheel failed with error code 1
from there i can continue to the last step (activate) and there I get the error "Cannot find path C:...\testdir\venv\Scripts\activate
Here is a copy-paste of the first error.
...Installing setuptools, pip, wheel...done.
Traceback (most recent call last):
File "c:\program files (x86)\python 3.5\lib\runpy.py", line 170, in _run_module_as_main
"__main__", mod_spec)
File "c:\program files (x86)\python 3.5\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Program Files (x86)\Python 3.5\Scripts\virtualenv.exe\__main__.py", line 9, in <module>
File "c:\program files (x86)\python 3.5\lib\site-packages\virtualenv.py", line 832, in main
symlink=options.symlink)
File "c:\program files (x86)\python 3.5\lib\site-packages\virtualenv.py", line 1004, in create_environment
install_wheel(to_install, py_executable, search_dirs)
File "c:\program files (x86)\python 3.5\lib\site-packages\virtualenv.py", line 969, in install_wheel
'PIP_NO_INDEX': '1'
File "c:\program files (x86)\python 3.5\lib\site-packages\virtualenv.py", line 910, in call_subprocess
% (cmd_desc, proc.returncode))
OSError: Command C:\Users\Fooly_000\t...v\Scripts\python.exe -c "import sys, pip; sys...d\"] + sys.argv[1:]))" setuptools pip wheel failed with error code 1```
Chris Freeman
Treehouse Moderator 68,441 PointsVictor, can you run the following commands to get your pip, virtualenv, setuptools versions?
pip --version pip show virtualenv pip show setuptools
Also, do you recall how you installed Python 3.5? There maybe a side-effect from the directory name having a space in it: 'Python 3.5".
Victor Gavojdea
11,796 Pointspip version is 7.1.2 virtualenv version is 13.1.2 setuptools version is 18.2
I had python 2.7 installed already. For Python 3.5 I just went to the python website (the one Kenneth Love goes to in his video) and downloaded it from there.
Chris Freeman
Treehouse Moderator 68,441 PointsMy advice would be to reinstall Python 3.5 to remove spaces in the path.
I went to the webpage https://www.python.org/downloads/release/python-350/ and downloaded the "Windows x86-64 executable installer". This downloads the file python-3.5.0-amd64.exe
.
If you run the exe
file, it puts python in the "C:\Users<your-user-name>\AppData\Local\Programs\Python\Python35\" by default. I don't prefer that.
Instead, I install this way:
- On Front install page, I select Add Python 3.5 to PATH checkbox
- Select Customize Installation
- For Optional Features, all boxes checked, select next
- Select install for all users checkbox (others leave as default)
- Change installation directory to C:\Python35 (my preference as it's easy to remember and get to)
- Select Install
Victor Gavojdea
11,796 PointsSo your last suggestion seems to do the trick except when I get to the activate command. It doesn't do anything. I don't see any (venv) prompt. Tried to deactivate in case it was active but that didn't do anything. So I don't know if it's working, but I don't think so.
Chris Freeman
Treehouse Moderator 68,441 PointsIn the newly created venv
directory, there should be a PowerShell script .\venv\Scripts\activate.ps1
.
If present, let's run it with debugging turned on, and post the results.
PS C:\Users\User\testdir>
PS C:\Users\User\testdir> Set-PSDebug -Trace 1
PS C:\Users\User\testdir> .\venv\Scripts\activate
DEBUG: 1+ >>>> .\venv\Scripts\activate
DEBUG: 5+ >>>> $script:THIS_PATH = $myinvocation.mycommand.path
DEBUG: 6+ >>>> $script:BASE_DIR = split-path (resolve-path "$THIS_PATH/..") -Parent
DEBUG: 7+ >>>> $script:DIR_NAME = split-path $BASE_DIR -Leaf
DEBUG: 33+ >>>> deactivate -nondestructive
DEBUG: 9+ function global:deactivate ( [switch] $NonDestructive ) >>>> {
DEBUG: 11+ if ( >>>> test-path variable:_OLD_VIRTUAL_PATH ) {
DEBUG: 11+ if ( >>>> test-path variable:_OLD_VIRTUAL_PATH ) {
DEBUG: 16+ if ( >>>> test-path function:_old_virtual_prompt ) {
DEBUG: 16+ if ( >>>> test-path function:_old_virtual_prompt ) {
DEBUG: 21+ if ( >>>> $env:VIRTUAL_ENV) {
DEBUG: 26+ if ( >>>> !$NonDestructive ) {
DEBUG: 30+ >>>> }
DEBUG: 35+ >>>> $VIRTUAL_ENV = $BASE_DIR
DEBUG: 36+ >>>> $env:VIRTUAL_ENV = $VIRTUAL_ENV
DEBUG: 38+ >>>> $global:_OLD_VIRTUAL_PATH = $env:PATH
DEBUG: 39+ >>>> $env:PATH = "$env:VIRTUAL_ENV/Scripts;" + $env:PATH
DEBUG: 40+ if ( >>>> ! $env:VIRTUAL_ENV_DISABLE_PROMPT) {
DEBUG: 42+ >>>> $function:_old_virtual_prompt = $function:prompt
(venv) PS C:\Users\User\testdir>
if you do not have a activate.ps1
file, please list the Scripts directory and post the output.
Victor Gavojdea
11,796 PointsDEBUG: 1+ >>>> .\venv\Scripts\activate.ps1
DEBUG: 19+ if ( & >>>> { Set-StrictMode -Version 1; $_.PSMessageDetails } )
{
DEBUG: 19+ if ( & { >>>> Set-StrictMode -Version 1; $_.PSMessageDetails } )
{
DEBUG: 19+ if ( & { Set-StrictMode -Version 1; >>>> $_.PSMessageDetails } )
{
DEBUG: 1+ & >>>> { Set-StrictMode -Version 1; $this.Exception.InnerException.PSMessageDetails }
DEBUG: 1+ & { >>>> Set-StrictMode -Version 1; $this.Exception.InnerException.PSMessageDetails }
DEBUG: 1+ & { Set-StrictMode -Version 1; >>>> $this.Exception.InnerException.PSMessageDetails }
DEBUG: 1+ & { Set-StrictMode -Version 1; $this.Exception.InnerException.PSMessageDetails >>>> }
DEBUG: 19+ if ( & { Set-StrictMode -Version 1; $_.PSMessageDetails >>>> } )
{
DEBUG: 26+ $errorCategoryMsg = & >>>> { Set-StrictMode -Version 1;
$_.ErrorCategory_Message }
DEBUG: 26+ $errorCategoryMsg = & { >>>> Set-StrictMode -Version 1;
$_.ErrorCategory_Message }
DEBUG: 26+ $errorCategoryMsg = & { Set-StrictMode -Version 1; >>>>
$_.ErrorCategory_Message }
DEBUG: 26+ $errorCategoryMsg = & { Set-StrictMode -Version 1;
$_.ErrorCategory_Message >>>> }
DEBUG: 42+ $originInfo = & >>>> { Set-StrictMode -Version 1; $_.OriginInfo }
DEBUG: 42+ $originInfo = & { >>>> Set-StrictMode -Version 1; $_.OriginInfo }
DEBUG: 42+ $originInfo = & { Set-StrictMode -Version 1; >>>> $_.OriginInfo }
DEBUG: 42+ $originInfo = & { Set-StrictMode -Version 1; $_.OriginInfo >>>> }
.\venv\Scripts\activate.ps1 : File
C:\users\Fooly_000\OneDrive\Documents\Programming\TreeHouse\venv\Scripts\activate.ps1 cannot be loaded. The contents
of file C:\users\Fooly_000\OneDrive\Documents\Programming\TreeHouse\venv\Scripts\activate.ps1 might have been changed
by an unauthorized user or process, because the hash of the file does not match the hash stored in the digital
signature. The script cannot run on the specified system. For more information, run Get-Help about_Signing..
At line:1 char:1
+ .\venv\Scripts\activate.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : SecurityError: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
Chris Freeman
Treehouse Moderator 68,441 PointsThe error has becoming clear. The powershell is instituting a security policy to prevent you from running unknown scripts. The various PowerShell Execution Policies establish what is allowed to run.
In your powershell window, you can see the current policy level using
(venv) PS C:\Users\User\testdir> get-executionpolicy
Unrestricted
(venv) PS C:\Users\User\testdir>
Mine is set to "Unrestricted". I suspect your is set to a more limited policy. After testing, the "RemoteSigned" policy seems to work. Try that before jumping to the more lax "Unrestricted" policy:
- Start a powershell using Run as Administrator
- at shell prompt, type set-executionpolicy remotesigned
- when asked Do you want to change the execution policy?, type Y, or just hit Enter
Victor Gavojdea
11,796 PointsOH MY GOD! THANK YOU SO MUCH!!!! Man, it took forever to figure that out! Thank you thank you thank you!!!! You are seriously THE BEST!
Thank you!
P.S. THANK. YOU.
Chris Freeman
Treehouse Moderator 68,441 PointsIf you are in a virtual env, the environment variable VIRTUAL_ENV is set. In Powershell, you can check your environment variables by:
PS C\: > cd env:
PS Env: > ls virtual_env
ls : Cannot find path 'virtual_env' because it does not exist....
# Back to C:
PS Env: > cd c:
# Activate the venv in the current directory
PS C: > .\venv\Scripts\activate
(venv) PS C: >
# Check for virtual_env
(venv) PS C: > cd env:
(venv) PS Env: > ls virtual_env
Name
----
VIRTUAL_ENV c:\Users\User\devel\venvtest\venv
# Back to C:
(venv) PS Env: > cd c:
(venv) PS C: >
You can also use Env:
to examine your path
variable which will change
when the venv is active.
Victor Gavojdea
11,796 PointsSo I'm getting an error on the 2nd comment. When I try venv\Scripts\activate I get "The term '.\venv\Scripts\activate" is not recognized...
in my venv\Scripts folder is only python.exe, python35.dll and pythonw.exe
the only activate file is in C:..\Lib\venv\scripts\nt
there i have activate.bat activate.ps1 and deactivate.bat
If I run .\activate it says it cannot run because it is not signed.
I looked up the user guide for virtualenv and saw something that looked like a workaround:
C:> Set-ExecutionPolicy AllSigned
But that didn't work either...
Chris Freeman
Treehouse Moderator 68,441 PointsChris Freeman
Treehouse Moderator 68,441 PointsWhat OS are you running?