激活venv时权限被拒绝


77

我刚刚启动了一个新的python项目,并通过virtualenv venv在终端中运行在项目文件夹中创建了一个venv 。但是,当我运行时,出现venv/bin/activate权限拒绝错误。

我试过了

sudo chown -R user:user project/venv

但我明白了

chown: user: illegal group name

我已经设置了很多次,但从来没有遇到过问题。还有什么我可以尝试的吗?

我在Mac上。


您确定不是user:users吗?

1
您输入了整个命令吗?source venv/bin/activate不要忘了源代码部分
Mangohero1,2008年

Answers:


208

你需要跑步

. venv/bin/activate

要么

source venv/bin/activate

activate文件故意不可执行,因为它必须是源文件。

必须采购它,因为它需要对环境进行更改。如果将其作为脚本运行,则只会更改用于运行脚本的子进程的环境。

注释中有人询问该.命令。在bash手册页中

    .  filename [arguments]
   source filename [arguments]
          Read  and execute commands from filename in the current shell
          environment and return the exit status of the last command
          executed from filename.

简而言之,.是一个内置的shell ,它与内置的含义相同source


我必须添加到~/.zshrc该行export VIRTUAL_ENV_DISABLE_PROMPT=,然后它起作用。重要的是没有价值。OSX 10.13.6上的zsh 5.7(x86_64-apple-darwin17.7.0)
jerik

1
我花了2天的时间找到这个答案:{}
Shobi

-4

基本上,它正在寻找在创建的文件夹路径上执行激活的权限。

在根目录上,在激活所在的所需路径上提供以下权限命令

sudo chmod -R 755 ~/tensorflow/* # or whatever the target structure 

这将扩展所有权限,包括读取/写入/执行和分组

然后执行 ~/bin/activate


1
您不想使激活脚本成为可执行文件。将脚本作为子进程运行不会对环境进行必要的更改。错误地认为环境已发生更改而采取的后续操作可能会导致重要数据丢失。该答案应删除。
David Cullen

-5

从命令行根目录输入:

source /home/<your_username>/<app_folder>/<venv_name>/bin/activate

为我工作


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.