我创建了一个virtualenv围绕我的项目,但当我尝试激活它时,我不能。 这可能只是语法或文件夹位置的问题,但我现在被难住了。

您可以在下面看到,我创建了virtualenv并将其命名为venv。一切看起来都很好,然后我尝试通过运行source venv/bin/activate来激活它

我想这可能只是与我的系统路径有关,但不确定指向什么(我确实知道如何编辑路径)。我使用的是python 7 / windows操作系统,虚拟环境2.2.x

Processing dependencies for virtualenv
Finished processing dependencies for virtualenv

c:\testdjangoproj\mysite>virtualenv --no-site-packages venv
The --no-site-packages flag is deprecated; it is now the default behavior.
Using real prefix 'C:\\Program Files (x86)\\Python'
New python executable in venv\Scripts\python.exe
File venv\Lib\distutils\distutils.cfg exists with different content; not overwri
ting
Installing setuptools.................done.
Installing pip...................done.

c:\testdjangoproj\mysite>source venv/bin/activate
'source' is not recognized as an internal or external command,
operable program or batch file.

c:\testdjangoproj\mysite>source venv/bin/activate
'source' is not recognized as an internal or external command,
operable program or batch file.

c:\testdjangoproj\mysite>source mysite/bin/activate
'source' is not recognized as an internal or external command,
operable program or batch file.

c:\testdjangoproj\mysite>

当前回答

:: location of bat file
::C:\Users\gaojia\Dropbox\Projects\free_return\venv\Scripts\activate.bat 
:: location of the cmd bat file and the ipython notebook
::C:\Users\gaojia\Dropbox\Projects\free_return\scripts\pre_analysis
source ..\..\venv\Scripts\activate
PAUSE
jupyter nbconvert --to html --execute consumer_response_DID.ipynb
PAUSE

上面是我的bat文件,我试图通过它来执行一个ipython笔记本。但cmd窗口给我什么,并立即关闭,任何建议为什么会发生这种情况?

其他回答

而不是使用:

 source ./venv/Scripts/activate

只使用:

 ./venv/Scripts/activate

您的脚本将被激活。

if .\venv\Scripts\activate也不工作,你会发现这个错误

\激活。Ps1无法加载,因为在此系统上禁用了运行脚本

你可以简单地在powershell中输入set-executionpolicy remotessigned,错误一定会消失。

Powershell应该以管理员身份运行

source是一个shell命令,专为运行在Linux(或任何Posix,但不管怎样,不是Windows)上的用户而设计。

在Windows上,virtualenv会创建一个.bat/。ps1文件,所以你应该运行venv\Scripts\activate代替(根据virtualenv文档的激活脚本)。

只需运行activate,不需要扩展名,这样无论您使用cmd.exe还是PowerShell,都将使用正确的文件。

我有一个地狱的时间在windows上使用virtualenv与git bash,我通常最终明确指定python二进制。

如果我的环境在say .env中,我将通过。/.env/Scripts/python.exe…或在shebang行#!./.env/Scripts/python.exe调用python;

两者都假设工作目录包含virtualenv (.env)。

对于那些疯狂到想要定制DOS提示符的人来说,venv激活可能会失败,这取决于您的% prompt %环境变量内容。

假设你有一个DOS提示,定义如下:

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,它显示如下,有一些花哨的颜色:

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

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

)

然后如果你尝试激活venv:

.\venv\Scripts\activate.bat

它可能会因为一个相当不清楚的错误而失败:

Path not found

没有进一步的迹象。

诀窍是activate.bat(/deactivate.bat)脚本尝试使用以下语法保存(/恢复)%PROMPT%变量:

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

可以用下面的语法来修复:

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

现在它显示:

[W10-MY_COMPUTER | W10-MY_COMPUTER\JOHNDOE]
15/09/2022 20:31
F:\
> venv\Scripts\activate.bat


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