Не запускается виртуальное окружение python windows

I created a virtualenv around my project, but when I try to activate it I cannot. It might just be syntax or folder location, but I am stumped right now. You can see below, I create the virtualenv...

For those of you crazy enough to have a custom DOS prompt, venv activation may fail, depending on your %PROMPT% environment variable content.

Say you have a DOS prompt defined as follows:

set PROMPT=$_$E[1;30;40m[$E[0;36;40m%computername% | %userdomain%%username%$E[1;30;40m] $E[0;33;40m$M$_$E[35;40m$d$s$t$h$h$h$h$h$h$_$E[1;33;40m$p$_$E[1;30;40m$g $E[0;37;40m

(btw, it shows as follows, with some fancy colors:

[W10-MY_COMPUTER | W10-MY_COMPUTERJOHNDOE]
15/09/2022 20:31
F:
> echo "Hello World"
Hello World

[W10-MY_COMPUTER | W10-MY_COMPUTERJOHNDOE]
15/09/2022 20:31
F:
>

)

Then if you try to activate a venv :

.venvScriptsactivate.bat

it may fail with a rather unclear error that states:

Path not found

without further indications.

The trick is that activate.bat(/deactivate.bat) scripts try to save(/restore) the %PROMPT% variable with this syntax:

...
set _OLD_VIRTUAL_PROMPT=%PROMPT%
...
set PROMPT=(venv) %PROMPT%
...

It can be fixed with this syntax:

...
set "_OLD_VIRTUAL_PROMPT=%PROMPT%"
...
set "PROMPT=(venv) %PROMPT%"
...

now it shows:

[W10-MY_COMPUTER | W10-MY_COMPUTERJOHNDOE]
15/09/2022 20:31
F:
> venvScriptsactivate.bat


(venv)
[W10-MY_COMPUTER | W10-MY_COMPUTERJOHNDOE]
15/09/2022 20:31
F:
>

For those of you crazy enough to have a custom DOS prompt, venv activation may fail, depending on your %PROMPT% environment variable content.

Say you have a DOS prompt defined as follows:

set PROMPT=$_$E[1;30;40m[$E[0;36;40m%computername% | %userdomain%%username%$E[1;30;40m] $E[0;33;40m$M$_$E[35;40m$d$s$t$h$h$h$h$h$h$_$E[1;33;40m$p$_$E[1;30;40m$g $E[0;37;40m

(btw, it shows as follows, with some fancy colors:

[W10-MY_COMPUTER | W10-MY_COMPUTERJOHNDOE]
15/09/2022 20:31
F:
> echo "Hello World"
Hello World

[W10-MY_COMPUTER | W10-MY_COMPUTERJOHNDOE]
15/09/2022 20:31
F:
>

)

Then if you try to activate a venv :

.venvScriptsactivate.bat

it may fail with a rather unclear error that states:

Path not found

without further indications.

The trick is that activate.bat(/deactivate.bat) scripts try to save(/restore) the %PROMPT% variable with this syntax:

...
set _OLD_VIRTUAL_PROMPT=%PROMPT%
...
set PROMPT=(venv) %PROMPT%
...

It can be fixed with this syntax:

...
set "_OLD_VIRTUAL_PROMPT=%PROMPT%"
...
set "PROMPT=(venv) %PROMPT%"
...

now it shows:

[W10-MY_COMPUTER | W10-MY_COMPUTERJOHNDOE]
15/09/2022 20:31
F:
> venvScriptsactivate.bat


(venv)
[W10-MY_COMPUTER | W10-MY_COMPUTERJOHNDOE]
15/09/2022 20:31
F:
>

I use Windows 10, python 3.7.4 and i’ve installed virtualenv with pip.
When i try to create virtual environment in cmd i can create with virtualenv myenv.It creates the files needed, Scripts folder and activate files are all there. But when i try to activate nothing happens. I try:

C:UsersSpikepyenv>cd crawler

C:UsersSpikepyenvcrawler>cd scripts

C:UsersSpikepyenvcrawlerScripts>activate

After this virtual environment name should be in parenthesis like this:

(crawler) C:UsersSpikepyenvcrawlerScripts

but it is not, virtual env is not activated, it continues like this:

C:UsersSpikepyenvcrawlerScripts>

I’ve tried running cmd in admin mode, doesn’t work.

I’ve tried to activate from Powershell:

PS C:UsersSpikepyenvcrawler> cd scripts
PS C:UsersSpikepyenvcrawlerscripts> activate

But i get a error:

activate : The term 'activate' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ activate
+ ~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (activate:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

So i’ve tried Set-ExecutionPolicy AllSigned and Set-ExecutionPolicy Unrestricted -Force on Powershell before activating it, it also doesn’t work.

I’ve also tried to activate it in cmder, i get the same result i got in cmd.

To solve i first looked in to other stackoverflow thread but none helped.

I use Windows 10, python 3.7.4 and i’ve installed virtualenv with pip.
When i try to create virtual environment in cmd i can create with virtualenv myenv.It creates the files needed, Scripts folder and activate files are all there. But when i try to activate nothing happens. I try:

C:UsersSpikepyenv>cd crawler

C:UsersSpikepyenvcrawler>cd scripts

C:UsersSpikepyenvcrawlerScripts>activate

After this virtual environment name should be in parenthesis like this:

(crawler) C:UsersSpikepyenvcrawlerScripts

but it is not, virtual env is not activated, it continues like this:

C:UsersSpikepyenvcrawlerScripts>

I’ve tried running cmd in admin mode, doesn’t work.

I’ve tried to activate from Powershell:

PS C:UsersSpikepyenvcrawler> cd scripts
PS C:UsersSpikepyenvcrawlerscripts> activate

But i get a error:

activate : The term 'activate' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ activate
+ ~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (activate:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

So i’ve tried Set-ExecutionPolicy AllSigned and Set-ExecutionPolicy Unrestricted -Force on Powershell before activating it, it also doesn’t work.

I’ve also tried to activate it in cmder, i get the same result i got in cmd.

To solve i first looked in to other stackoverflow thread but none helped.

Содержание

Введение
Решенные проблемы

Введение

Многие сложности возникают у новичков из-за того, что им никто не объяснил про

виртуальное окружение

.

Вы можете избавить себя от головной боли прочитав статью

virtualenv

или

venv

Установлено несколько версий Python

Итак, Вы установили python, pipe, pipenv, requests и ещё много чего, но
вдруг выяснили, что на компьютере уже не одна, а несколько версий python.

Например, у Вас установлены версии 2.7 и 3.5.

Когда Вы запускаете python, то хотите, чтобы работала последняя версия, но,
почему-то работает версия 2.7.

Выясним, как разобраться в этой ситуации.

Python -V и which python

Узнаем версию python которая вызывается командой python с флаго -V

python -V

Python 2.7.18rcl

Полезная команда, которую можно выполнить, чтобы узнать где расположен ваш Python — which

which python

/usr/bin/python

Как видите, в моей

Ubuntu

Python находится в /usr/bin/python и имеет версию 2.7.18rcl

Третий Python тоже установлен, посмотреть версию и директорию также просто

python3 -V

Python 3.9.5

which python3

/usr/bin/python3

Резюмируем: второй Python вызывается командой python а третий Python командой python3.

Обычно Python установлен в директорию /usr/bin

Ещё один способ получить эту информацию — использование команды type

type python3

python3 is hashed (/usr/bin/python3)

type python

python3 is hashed (/usr/bin/python)

Следующий способ — через sys.executable

здесь я для разнообразия настроил alias в .bashrc и теперь команда python эквивалентна python3

python

Python 3.8.5 (default, Jul 28 2020, 12:59:40)
[GCC 9.3.0] on linux
Type «help», «copyright», «credits» or «license» for more information.

>>> import sys

>>> sys.executable

‘/usr/bin/python3’

Если у вас уже был третий Python, например 3.8.5, а вы самостоятельно скачали и
установили более позднюю версию, например 3.9.1 как в

инструкции

то у вас будет два разных третьих Python.

Убедиться в этом можно изучив директорию

/usr/local/bin/

ls -la /usr/local/bin/

total 21648
drwxr-xr-x 2 root root 4096 Feb 4 11:08 .
drwxr-xr-x 10 root root 4096 Jul 31 2020 ..
lrwxrwxrwx 1 root root 8 Feb 4 11:08 2to3 -> 2to3-3.9
-rwxr-xr-x 1 root root 101 Feb 4 11:08 2to3-3.9
-rwxr-xr-x 1 root root 238 Feb 4 11:08 easy_install-3.9
lrwxrwxrwx 1 root root 7 Feb 4 11:08 idle3 -> idle3.9
-rwxr-xr-x 1 root root 99 Feb 4 11:08 idle3.9
-rwxr-xr-x 1 root root 229 Feb 4 11:08 pip3
-rwxr-xr-x 1 root root 229 Feb 4 11:08 pip3.9
lrwxrwxrwx 1 root root 8 Feb 4 11:08 pydoc3 -> pydoc3.9
-rwxr-xr-x 1 root root 84 Feb 4 11:08 pydoc3.9
lrwxrwxrwx 1 root root 9 Feb 4 11:08 python3 -> python3.9
-rwxr-xr-x 1 root root 22127472 Feb 4 11:05 python3.9
-rwxr-xr-x 1 root root 3087 Feb 4 11:08 python3.9-config
lrwxrwxrwx 1 root root 16 Feb 4 11:08 python3-config -> python3.9-config

which python3

/usr/local/bin/python3

which python3.9

/usr/local/bin/python3.9

В такой ситуации вам нужно специально указывать полную версию python3.9 для
запуска программ, либо настроить

alias

PATH

Если ни одна из команд pyhon и python3 не работает, бывает полезно проверить переменную PATH

echo $PATH

/home/andrei/.local/bin:/home/andrei/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Как вы можете убедиться моя директория /usr/bin прописана в PATH

Если вам нужно добавить директорию в PATH читайте статью

«PATH в Linux»

или статью

«PATH в Windows»

Важно понимать, что если в каждой из директорий, упомянутых в PATH, будет установлено по какому-то Python выполняться
будет тот, который в первой директории.

Если нужно использовать Python из какой-то определённой директории, нужно прописать её путь. В этом
случае не обязательно наличие этого пути в PATH

/usr/bin/python3

Python 3.8.5 (default, Jul 28 2020, 12:59:40)
[GCC 9.3.0] on linux
Type «help», «copyright», «credits» or «license» for more information.
>>>

>>> говорит о том, что Python в интерактивном режиме.

Pip

Выясним куда смотрит

pip

pip -V

/home/andrei/.local/lib/python2.7/site-packages (python 2.7)

Как видите, pip смотрит в директорию python2.7 поэтому всё, что мы до этого
устанавливали командой pip install попало к версии 2.7
а версия 3.5 не имеет ни pipenv ни requests и, например,

протестировать интерфейсы

с её помощью не получится

Если вы выполнили pip -V и получили в ответ

Command ‘pip’ not found, but there are 18 similar ones.

Посмотрите что выдаст

pip3 -V

В моей

Ubuntu

результат такой

pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)

Посмотреть куда pip установил пакет можно командой pip show

Проверим, куда установлен модуль requests, который пригодится нам для работы с

REST API

pip show requests

Name: requests
Version: 2.22.0
Summary: Python HTTP for Humans.
Home-page: http://python-requests.org
Author: Kenneth Reitz
Author-email: me@kennethreitz.org
License: Apache 2.0
Location: /usr/lib/python3/dist-packages
Requires:
Required-by: yandextank, netort, influxdb

alias

Если вы работаете в

Linux

можете прописать alias python=python3

Установить дополнительную версию Python

Если вы осознанно хотите установить определённую версию Python в добавок к уже существующей выполните

Куда устанавливаются различные версии Python

Просмотрите содержимое /usr/local/bin

ls -la /usr/local/bin

Результат на моём ПК показывает, что здесь находится версия 3.5

total 23620
drwxr-xr-x 0 root root 512 Mar 19 18:16 .
drwxr-xr-x 0 root root 512 Mar 30 2017 ..
lrwxrwxrwx 1 root root 8 Mar 19 18:16 2to3 -> 2to3-3.5
-rwxrwxrwx 1 root root 101 Mar 19 18:16 2to3-3.5
lrwxrwxrwx 1 root root 7 Mar 19 18:16 idle3 -> idle3.5
-rwxrwxrwx 1 root root 99 Mar 19 18:16 idle3.5
lrwxrwxrwx 1 root root 8 Mar 19 18:16 pydoc3 -> pydoc3.5
-rwxrwxrwx 1 root root 84 Mar 19 18:16 pydoc3.5
lrwxrwxrwx 1 root root 9 Mar 19 18:16 python3 -> python3.5
-rwxr-xr-x 2 root root 12090016 Mar 19 18:13 python3.5
lrwxrwxrwx 1 root root 17 Mar 19 18:16 python3.5-config -> python3.5m-config
-rwxr-xr-x 2 root root 12090016 Mar 19 18:13 python3.5m
-rwxr-xr-x 1 root root 3071 Mar 19 18:16 python3.5m-config
lrwxrwxrwx 1 root root 16 Mar 19 18:16 python3-config -> python3.5-config
lrwxrwxrwx 1 root root 10 Mar 19 18:16 pyvenv -> pyvenv-3.5
-rwxrwxrwx 1 root root 236 Mar 19 18:16 pyvenv-3.5

Версия 2.7 скорее всего здесь /home/andrei/.local/lib/

ls -la /home/andrei/.local/lib/python2.7/site-packages/

Результат на моём ПК

total 1304
drwx—— 0 andrei andrei 512 Mar 19 13:19 .
drwx—— 0 andrei andrei 512 Mar 19 13:19 ..
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 asn1crypto
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 asn1crypto-0.24.0.dist-info
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 certifi
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 certifi-2018.1.18.dist-info
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 cffi
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 cffi-1.11.5.dist-info
-rwxrwxrwx 1 andrei andrei 783672 Mar 19 13:19 _cffi_backend.so
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 chardet
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 chardet-3.0.4.dist-info
-rw-rw-rw- 1 andrei andrei 10826 Mar 19 13:19 clonevirtualenv.py
-rw-rw-rw- 1 andrei andrei 11094 Mar 19 13:19 clonevirtualenv.pyc
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 cryptography
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 cryptography-2.2.dist-info
-rw-rw-rw- 1 andrei andrei 126 Mar 19 13:19 easy_install.py
-rw-rw-rw- 1 andrei andrei 315 Mar 19 13:19 easy_install.pyc
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 enum
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 enum34-1.1.6.dist-info
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 idna
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 idna-2.6.dist-info
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 ipaddress-1.0.19.dist-info
-rw-rw-rw- 1 andrei andrei 79852 Mar 19 13:19 ipaddress.py
-rw-rw-rw- 1 andrei andrei 75765 Mar 19 13:19 ipaddress.pyc
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 .libs_cffi_backend
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 OpenSSL
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 ordereddict-1.1.dist-info
-rw-rw-rw- 1 andrei andrei 4221 Mar 19 13:19 ordereddict.py
-rw-rw-rw- 1 andrei andrei 4388 Mar 19 13:19 ordereddict.pyc
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 pathlib-1.0.1.dist-info
-rw-rw-rw- 1 andrei andrei 41481 Mar 19 13:19 pathlib.py
-rw-rw-rw- 1 andrei andrei 43650 Mar 19 13:19 pathlib.pyc
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 pip
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 pip-9.0.2.dist-info
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 pipenv
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 pipenv-11.8.2.dist-info
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 pkg_resources
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 pycparser
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 pycparser-2.18.dist-info
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 pyOpenSSL-17.5.0.dist-info
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 requests
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 requests-2.18.4.dist-info
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 setuptools
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 setuptools-39.0.1.dist-info
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 six-1.11.0.dist-info
-rw-rw-rw- 1 andrei andrei 30888 Mar 19 13:19 six.py
-rw-rw-rw- 1 andrei andrei 30210 Mar 19 13:19 six.pyc
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 urllib3
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 urllib3-1.22.dist-info
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 virtualenv-15.1.0.dist-info
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 virtualenv_clone-0.3.0.dist-info
-rw-rw-rw- 1 andrei andrei 99021 Mar 19 13:19 virtualenv.py
-rw-rw-rw- 1 andrei andrei 86676 Mar 19 13:19 virtualenv.pyc
drwxrwxrwx 0 andrei andrei 512 Mar 19 13:19 virtualenv_support

Существует несколько способов обойти эту проблему. Сперва рассмотрим использование
команды python3.

python3 -V

Python 3.5.0

Как мы только что смогли убедиться команда python3 использует новую версию Python.

Установим pip3

sudo apt install python3-pip

Проверим, что он установился в нужную директорию

pip3 -V

pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

Теперь установим pipenv

pip3 install pipenv

Советую также прочитать статьи

pip

,

sys.path

Установить пакет для определённой версии Python

Если у вас несколько версий Python и нужно установить какой-то пакет только
для определённой версии, назовём её X.X, воспользуйтесь командой

pythonX.X -m pip install название_пакета —user —ignore-installed

Инструкция по установке Python на хостинге

ModuleNotFoundError: No module named ‘urllib2’

Модуль urllib2 был разделён на urllib.request и urllib.error

Поэтому строку

import urllib2

Нужно заменить на

import urllib.request

import urllib.error

TabError: inconsistent use of tabs and spaces in indentation

Эта ошибка обычно вызвана тем, что нажатие TAB не эквивалентно трём пробелам.

Можно попробовать заменить все отступы на пробелы строго соблюдая равенство
количества пробелов везде где нужно.

ModuleNotFoundError: No module named ‘requests’

Эта ошибка обычно вызвана тем, что модуль requests
не установлен, либо установлен, но не для того python, который Вы запустили.

Например, для python2.6 установлен, а для python3 не установлен.

Можно попробовать установить модуль requests. Подробнее про это
я писал в статье Тестирование с помощью Python.
Потому что столкнулся с этой проблемой впервые именно при
тестировании
API

Если эта проблема возникла при использовании PyCharm
установите requests для Вашего проекта по следующей

инструкции

Перейдите в настройки проекта нажав

CTRL + ALT + S

Установка модуля requests в PyCharm

File — Settings

Выберите раздел Project Interpreter

Установка модуля requests в PyCharm изображение с сайта www.andreyolegovich.ru

Project Interpreter

Нажмите на плюс в правой части экрана

Введите в стоку поиска название нужного модуля. В моём случае это requests

Установка модуля requests в PyCharm изображение с сайта www.andreyolegovich.ru

Введите в поиске requests

Должно открыться окно Available Packages

Нажмите кнопку Install Package

Установка модуля requests в PyCharm изображение с сайта www.andreyolegovich.ru

Нажмите Install

Дождитесь окончания установки

Установка модуля requests в PyCharm изображение с сайта www.andreyolegovich.ru

Дождитесь окончания установки

SyntaxError: Missing parentheses in call to ‘print’

Эта ошибка обычно появляется когда Вы пробуете в python 3 использовать print без скобок,
так как это работало в python 2

print data

В python 3 нужно использовать скобки

print (data)

TypeError: getsockaddrarg: AF_INET address must be tuple, not str

Эта ошибка обычно появляется когда Вы неправильно ставите кавычку,
указывая куда нужно подключиться.

Правильный вариант — указать кортеж (tuple), который выглядит следующим образом:

(ip, port), ip обычно в кавычках, порт без

Пример (‘10.6.0.100’, 10000)

sock.connect(('10.6.0.130' ,9090))

Ошибка возникает если взять в кавычки и ip и порт,
тогда вместо кортежа передаётся строка, на что и жалуется
интерпретатор.

sock.connect(('10.6.0.130 ,9090'))

Traceback (most recent call last):
File «send.py», line 4, in <module>
sock.connect((‘10.6.0.130,9090’))
TypeError: getsockaddrarg: AF_INET address must be tuple, not str

Не выполняется команда virtualenv

Если Вы только что установили

virtualenv

, но при попытке выполнить

virtualenv new_env

или

venv new_env

Вы получаете что-то в духе:

virtualenv : The term ‘virtualenv’ is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name,
or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ virtualenv juha_env
+ ~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (virtualenv:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Попробуйте

python -m virtualenv new_env

Не активируется виртуальное окружение

Сначала разберём случай в чистом virtualenv потом перейдём к virtualenvwrapper-win

1. virtualenv

Вы под

Windows

и пытаетесь активировать Ваше виртуальное окружение, которое называется, допустим, test_env командой

test_envScriptsactivate.bat

И ничего не происходит

Вы пробуете

test_envScriptsactivate.ps1

И получаете

.test_envScriptsactivate.ps1 : File C:UsersAndreivirtualenvstest_envScriptsactivate.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see
about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .test_envScriptsactivate.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : SecurityError: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess

Нужно зайти в PowerShell в режиме администратора и выполнить

Set-ExecutionPolicy Unrestricted -Force

И выполните ещё раз

test_envScriptsactivate.ps1

Set-ExecutionPolicy -Scope CurrentUser Unrestricted -Force

2. virtualenvwrapper-win

Вы установили

virtualenvwrapper-win

и создали новое окружение

mkvirtualenv testEnv

created virtual environment CPython3.8.2.final.0-32 in 955ms
creator CPython3Windows(dest=C:UsersAndreiEnvstestEnv, clear=False, global=False)
seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=C:UsersAndreiAppDataLocalpypavirtualenvseed-app-datav1.0.1)
activators BashActivator,BatchActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator

Его видно в списке окружений

lsvirtualenv

dir /b /ad «C:UsersAndreiEnvs»
==============================================================================
testEnv

И

workon

его видит

workon

Pass a name to activate one of the following virtualenvs:
==============================================================================
testEnv

Чтобы активировать его вводим

workon testEnv

NameError: name ‘psutil’ is not defined

NameError: name ‘psutil’ is not defined

Подобные ошибки возникают если ещё не установили какую-то
библиотеку, но уже попробовали ей воспользоваться

sudo apt install -y python-psutil

Решённые проблемы

Сложности при работе с Python
Python
Установлено несколько версий Python
Установить дополнительную версию Python
Проверка системного пути
Куда устанавливаются различные версии Python
Установить пакет для определённой версии Python
AttributeError: partially initialized module ‘datetime’ has no attribute ‘date’
ModuleNotFoundError: No module named ‘requests
ModuleNotFoundError: No module named ‘urllib2
ModuleNotFoundError: No module named numpy
SyntaxError: Missing parentheses in call to ‘print’
SyntaxError: Non-ASCII character
TabError: inconsistent use of tabs and spaces in indentation
TypeError: getsockaddrarg: AF_INET address must be tuple, not str
TypeError: unsupported operand type(s) for +:
TypeError: module object is not callable
TypeError: ‘str’ object is not callable
TypeError: __init__() got an unexpected keyword argument ‘capture_output’
TypeError: ‘generator’ object is not subscriptable
virtualenv : The term ‘virtualenv’ is not recognized
Не активируется виртуальное окружение
SSL module is not available
UnicodeDecodeError: ‘charmap’ codec can’t decode byte 0x90 in position

Виртуальные среды (окружения) используются в Python 3 контроля версионности пакетов. Кроме контроля версий среды используют для использования разных интерпретаторов. Самих пакетов, которые создают виртуальные окружения много. В этой статье речь пойдет про venv, virtualenv и virtualenvwrapper.

Для чего нужно виртуальные среды?

При создании скрипта или программы вы часто используете сторонние модули (пакеты). Если в последующем потребуется перенос программы на другой компьютер, то вы можете столкнуться с двумя проблемами:

  1. Нужные пакеты отсутствуют на новом компьютере и придется проверять каждый файл программы для их поиска. Либо получить список установленных пакетов через «pip list» на старом компьютере, который выведет множество лишних модулей.
  2. Даже если количество пакетов или файлов программ маленькое, или вы его создали отдельно, то вы все равно можете столкнуться с проблемами в версиях. Пакеты могли быть обновлены, а методы и классы изменены.

Использование виртуальных сред избавляет вас от этих проблем. В таком виртуальной среде находится свой интерпретатор, свой pip и все пакеты относятся только к нему. Так же, весь проект, можно перенести как папку на другой компьютер без ошибок.

Кроме этого вы можете запускать разные версии Python в разных виртуальных средах, что сильно упрощает работу.

Установка и создания окружения с virtualenv

Самый популярный пакет, который используется для создания виртуальных сред в Python, это virtualenv. Для его установки на Windows выполните:

pip install virtualenv

Для установки на Linux системах, для Python 3, понадобится выполнить такую команду:

sudo pip3 install virtualenv

Если вы не будете использовать sudo, то в зависимости от версии ОС у вас появятся разные ошибки. В CentOS установка не выполнится вовсе, а в Ubuntu не будет добавлен путь в переменную окружения:

  • PermissionError: [Errno 13] Permission denied: ‘/usr/local/lib/python3.6’
  • Command ‘virtualenv’ not found, but can be installed with: sudo apt install virtualenv

Далее, вне зависимости от того используете ли вы Linux или Windows, вы можете выполнить команду получения справки:

virtualenv --help

Установка virtualenv в Python3

Я использую Python 3.6, и так я создам окружение в папке projectname/venv:

virtualenv -p python3.6 project/venv

Способ выше устанавливает окружение относительно текущего пути. Если нужно установить на другом диске или каталоге, то можно использовать абсолютный путь. Так же не обязательно указывать параметр «-p» если вы используете одну версию Python. Вариант как это может быть сделано на Windows:

virtualenv D:projectvenv

Само расположение виртуального окружения рекомендуется создавать в одной папке вместе разрабатываемым приложением. Такую структуру будет легче сопровождать. Я обычно придерживаюсь такой структуры:

-projectname # Каталог проекта
--venv # Окружение
--app # Каталог с приложением

Активация и выход из окружения

Для того что бы виртуальное окружения начало работать его нужно активировать. В разных ОС это делается по-разному.

В случаях с Linux указываем полный путь до venv/bin/activate:

source project/venv/bin/activate

Для активации в Windows, в папке venvScripts есть несколько файлов:

  • activate.ps1 — для активации через Powershell;
  • activate.bat — для активации через CMD.

Для активации просто укажите полный путь до файла. Например:

D:projectnamevenvScriptsactivate.ps1

О том что вы находитесь в виртуальном окружении свидетельствуют следующие надписи:

Активация virtualenv в Python3

Вы так же можете сравнить количество установленных пакетов внутри виртуального окружения с тем, что установлено вне:

pip list

Список установленных пакетов через pip в Python

Теперь вы можете устанавливать пакеты, которые будут работать только в этой среде.

Для выхода из окружения, за исключением запуска с помощью CMD, используйте команду:

deactivate

Для CMD нужно указать путь до файла «venvScriptsdeactivate.bat».

Управление средами через virtualenvwrapper

Если вы создаете множество виртуальных сред, например для тестирования в разных версиях Python, вы можете использовать virtualenvwrapper. Этот пакет представляет собой надстройку для virtualenv для более удобной работы и устанавливается отдельно.

Благодаря этому пакету мы сможем запускать ваши окружения так:

workon project_name
# вместо
source project_name/venv/bin/activate

Для Windows нужно установить следующий пакет:

pip install virtualenvwrapper-win

Для Linux нужно так же использовать sudo:

sudo pip3 install virtualenvwrapper

Настройки для Linux

Virtualenvwrapper хранит все окружения в одном месте. Это место определяется через переменную WORKON_HOME в Linux и по умолчанию равно директории ‘/home/пользователь/.virtualenvs’. Если вы хотите изменить это расположение — выполните команду экспорта с нужным путем:

export WORKON_HOME = /var/envs/

# Создание директории
source ~/.bashrc
mkdir -p $WORKON_HOME

Следующая команда добавит скрипты в домашний каталог для удобной работы:

source /usr/local/bin/virtualenvwrapper.sh
# Если путь отличается, то файл virtualenvwrapper.sh можно найти так
which virtualenvwrapper.sh

При выполнении предыдущей команды у меня появилась ошибка:

virtualenvwrapper.sh: There was a problem running the initialization hooks. If Python could not import the module virtualenvwrapper.hook_loader

Она исправилась добавлением переменной в env с путем до нужного интерпретатора:

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

Настройки для Windows

Все виртуальные среды, которые будут созданы, по умолчанию будут располагаться по пути «C:Users%USERNAME%Envs». Если вам нужно изменить расположение, то создайте переменную WORKON_HOME с нужной директорией:

Определение переменных окружений в Windows для virtualenvwrapper

Важный момент, в случае с Windows, команды virtualenvwrapper не будут выполняться Powershell. Команды работают только через CMD.

Основные команды

Далее мы можем использовать следующие команды (основные):

  • mkvirtualenv — создание окружения;
  • lsvirtualenv — отображение списка окружений;
  • rmvirtualenv — удаление;
  • workon — переключение между виртуальными средами;
  • deactivate — выход из текущего окружения.

Так мы создадим виртуальную среду:

mkvirtualenv project_name

Создание окружения с mkvirtualenv в Python virtualenvwrapper

Так выйдем из созданной среды:

deactivate

Активация окружения:

workon django3.0

Изменение сред с workon в Python virtualenvwrapper

Если нужно использовать другую версию Python:

mkvirtualenv -p python2.7 project_name/venv

Получение справки:

mkvirtualenv -h

Создание виртуальных сред со встроенным пакетом Python venv

Ранее, до версии Python >= 3.6 базовая установка интерпретатора шла вместе с пакетом pyenv, но на данный момент он считается устаревшим и более не поддерживается. На его смену пришел venv. В некоторых версиях ОС (Ubuntu/Debian) может потребоваться его отдельная установка:

sudo apt install python3-venv

Проверить, то что пакет venv установлен, можно так:

python -m venv
# или
python3 -m venv

Установка venv в Python

Следующая команда создаст виртуальную среду:

python -m venv C:project_nameproject_venv
# или
python3 -m venv /var/project_name/project_venv

Выбранная версия Python и стандартные библиотеки будут скопированы в указанную папку.

Активация окружения выполняется следующим образом:

# CMD
C:project_nameproject_venvScriptsactivate.bat
# Powershell
C:project_nameproject_venvScriptsActivate.ps1
# Bash
project_name/project_venv/bin/activate

Для выхода из окружения:

# CMD
C:project_nameproject_venvScriptsdeactivate.bat
# Powershell и bash
deactivate

Создание виртуальной среды с venv в Python

Создание виртуального окружения в Pycharm

В некоторых IDE, например Pycharm, консоль встроенная и по умолчанию у вас будет запускаться интерпретатор выбранный в настройках. В Pycharm вы можете создать или изменить проект привязав его к определенному интерпретатору.

Виртуальную среду можно создать при создании нового проекта. Для этого нужно зайти по следующему пути:

Подключение virtualenv в Pycharm

В новом окне выбрать название проекта, место для копирования, интерпретатор и нажать кнопку создания окружения:

Создание виртуального окружения virtualenv в Pycharm

Для настройки окружения для старых проектов нужно зайти в настройки:

Изменение виртуального окружения virtualenv в Pycharm

Во вкладе «Python Interpreter» будет выбор из существующих интерпретаторов (1). Либо можно создать новый (2):

Изменение виртуального окружения virtualenv в Pycharm

Создание списка установленных пакетов Requirements.txt

Используя виртуальные окружения можно легко создавать файл, в котором будут собраны все названия и версии пакетов для определенного проекта. Этот подход используется для удобства работы, так как одной программой мы сразу установим нужные пакеты.

Так мы получим список пакетов, установленных в виртуальном окружении, в формате читаемом pip:

pip freeze

Получение списка установленных пакетов с pip в Python

Следующим способом мы экспортируем этот список в файл Requirements.txt (способ подходит для Bash/CMD/Powershell):

pip freeze > Requirements.txt

На другом компьютере/среде мы можем этот список быстро проверить и установить отсутствующие пакеты следующей командой:

pip install -r Requirements.txt

Создание файла Requitements.txt в Python с pip 

Теги:

#python

#virtualenv

#venv

По сути, я не могу активировать свою виртуальную среду, которую я создаю.

Я делаю это внутри Windows PowerShell с помощью

scriptsactivate

Но получите сообщение об ошибке

msgstr «невозможно загрузить, потому что в этой системе отключено выполнение скриптов».

Может ли это быть из-за того, что на моем компьютере нет прав администратора?

11 ответов

Лучший ответ

Перемещение комментария в раздел ответов :)

Согласно Техническая поддержка Microsoft может быть проблема с параметрами политики выполнения. Чтобы это исправить, попробуйте выполнить Set-ExecutionPolicy Unrestricted -Force в Power Power Shell.

NB: Не забудьте запустить Powershell от имени администратора.


71

Franklin Yu
17 Сен 2018 в 19:41

Это сработало для меня:

Вы можете просто открыть обычный (вам не нужен повышенный доступ) сеанс cmd или powershell (я использую встроенный PS-терминал в vscode) и набрать следующее из папки, где находится файл сценария, например: .venvScriptsActivate.ps1:

powershell.exe -executionpolicy unrestricted -command .Activate.ps1 -Scope CurrentUser

И после этого вы можете запустить команду activate.

Примечание. Это позволит запускать только этот конкретный скрипт и только зарегистрированному пользователю.


0

Elmo
6 Авг 2018 в 14:29

Чтобы установить виртуальную среду только в Windows Powershell, но для активации вам нужно запустить Windows powershell от имени Администратора .

  1. pip install virtualenv
  2. virtualenv %Name of virtual environment%

Теперь он установлен, чтобы активировать его. Запустите PowerShell от имени администратора .

  1. Set-ExecutionPolicy Unrestricted -Force
  2. .envScriptsactivate

Дезактивировать окружающую среду

  1. .envScriptsdeactivate

Надеюсь, это поможет.

Для получения дополнительной помощи посетите официальную страницу https://pypi.org/project/virtualenv/1.8.2/


0

Amit Gupta
21 Сен 2018 в 11:23

В Windows откройте Windows PowerShell от имени администратора

enter image description here

Set-ExecutionPolicy Unrestricted -Force

Создать виртуальную среду

pip install virtualenv
virtualenv foo
cd .foo
.Scriptsactivate

enter image description here


1

Do Nhu Vy
13 Фев 2020 в 15:08

Установите ExcutionPolicy для области действия после Да [y], затем введите Сценарии / активировать

enter image description here


3

Franklin Yu
17 Сен 2018 в 19:40

Для меня в Windows 10 x64 — Откройте cmd от имени администратора — powershell — введите Set-ExecutionPolicy Unrestricted -Force

Вуаля, откройте VSCode и запустите pythoninnngg


0

Sami Kalamallah
11 Фев 2020 в 05:44

Следуйте этим шагам до последнего. Шаг 1. Используйте Windows PowerShell в качестве АДМИНИСТРАТОРА. (ОЧЕНЬ ВАЖНО) и перейдите в папку проекта. Бегать

virtual env

Шаг 2. Проверьте в папке скриптов, есть ли у вас файл activ.bat

envScriptsactivate.bat #It has to be there.

Шаг 3. Если его здесь нет, убедитесь, что у вас есть интернет-соединение, и запустите его снова.

virtual env 

Шаг 4. Если файл activ.bat находится в папке сценария, продолжайте. шаг 5. запустите это на вашей оболочке

Set-ExecutionPolicy Unrestricted -Force

Шаг 6. Чтобы активировать virtualenv в Windows, активируйте скрипт в папке Scripts:

envScriptsactivate.bat

Шаг 7 проверьте наличие (env) в начале каждой строки, это показывает, что вы находитесь в виртуальной среде

Шаг 8. Для повторной активации при повторном запуске проекта:

.\envScriptsactivate


1

Ochieng’
12 Сен 2019 в 09:27

В использовании PowerShell

Scriptsactivate.ps1

Вместо activ.bat, который больше не работает в powershell.

Также деактивировать, просто набрав

deactivate

В командной строке


8

Matt N
1 Мар 2019 в 23:52

Если вы не хотите изменять политику выполнения вашего компьютера в Windows, как я, вы можете использовать командную строку Windows вместо Windows PowerShell, и просто нужно запустить {{Х0}} активировать вашу среду


0

ianNg
11 Ноя 2018 в 17:06

Другое быстрое решение, которое я нашел здесь (оно применимо только для Windows Powershell), выглядит следующим образом:

Первый забег

Scriptscmd

Тогда беги

Scriptsactivate.bat

На этой позиции ваш Virtualenv активирован. Теперь, если вы деактивируете его и захотите снова активировать позже в том же сеансе PowerShell, вам просто нужно запустить

Scriptsactivate

В дальнейшем нет необходимости вводить команды cmd или activ.bat .


3

idmean
24 Сен 2019 в 11:59

Понравилась статья? Поделить с друзьями:
  • Не запускается диспетчер задач windows 7 taskmgr
  • Не запускается виртуальная машина virtualbox на windows 10 0x80004005
  • Не запускается контекстное меню правой кнопкой мыши windows 10
  • Не запускается диспетчер задач windows 10 что делать
  • Не запускается виртуальная машина hyper v windows server 2016